if 语句中的 NSCountedSet

NSCountedSet in an if statement

我正在尝试 NSLogViewController 上每个标签内的 @"1" 的数量。我在 storyboard 上创建了 3 个标签,然后连接了 IBOutlet。我将这些标签中的每一个都添加到 NSMutableArray 中并分配了 initWithObjects。我手动设置了每个标签的文字为1、2、3。

现在开始我的问题。

我想使用 NScountedSet 来计算标签数组中 1 的数量。如果满足条件,则 NSLog 一些文本。

我创建了一个简单版本的代码来强调这个问题。

@property (weak, nonatomic) IBOutlet UILabel *l1;
@property (weak, nonatomic) IBOutlet UILabel *l2;
@property (weak, nonatomic) IBOutlet UILabel *l3;



@property NSMutableArray *dice;

@end

@implementation MainViewController

- (void)viewDidLoad {
[super viewDidLoad];

[self.l1.text isEqualToString:@"1"];
[self.l2.text isEqualToString:@"2"];
[self.l3.text isEqualToString:@"3"];


self.dice = [[NSMutableArray alloc] initWithObjects: self.l1, self.l2,  
self.l3, nil];




NSCountedSet *setOfNumbers = [NSCountedSet setWithObject:self.dice];


if ([setOfNumbers countForObject: @"1"  == 1]) {
    NSLog(@"Count of 1 in array is %lu", (unsigned long) [setOfNumbers  
countForObject:@"1"] );
}

我收到 3 个警告...两个黄色和 1 个红色。 我的老师告诉我这行不通,还有其他方法可以做到。我用另一种方式做到了。我真的很困惑为什么这不起作用。我只在 class 的第 2 周。

有人可以解释为什么这不起作用以及我如何让它起作用吗? 谢谢

显然你有几个问题。

  1. [self.l1.text isEqualToString:@"1"];这样的行什么都不做。您比较标签的文本但不检查测试结果。
  2. 您将标签而不是标签的文本添加到 self.dice 数组。
  3. if 行有语法错误。
  4. 您使用数组而不是数组中的对象创建计数集。
  5. 将计数集中的计数存储在一个变量中,这样您就不会计算两次。

这是一些固定代码:

@implementation MainViewController

- (void)viewDidLoad {
    [super viewDidLoad];

    self.dice = [[NSMutableArray alloc] initWithObjects:self.l1.text, self.l2.text, self.l3.text, nil];

    NSCountedSet *setOfNumbers = [NSCountedSet setWithArray:self.dice];

    NSUInteger count = [setOfNumbers countForObject: @"1"];
    if (count == 1) {
        NSLog(@"Count of 1 in array is %lu", (unsigned long)count);
    }
}