NSCountedSet在if语句中

时间:2016-01-23 04:29:42

标签: ios objective-c nscountedset

我正在尝试NSLog ViewController上每个标签内@ {1}的数量。storyboard。我在IBOutlet上创建了3个标签,然后连接了NSMutableArray。我将每个标签添加到NScountedSet并分配initWithObjects。我手动将每个标签的文本设置为1,2和3。

现在我的问题。

我想使用@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"] ); } 来计算标签数组中1的数量。如果条件满足,则NSLog一些文本。

我创建了一个简单版本的代码来突出问题。

substring()

我得到3个警告......两个黄色和一个红色。 我的老师告诉我这不会工作,还有其他方法可以做到。我已经做到了另一种方式。我真的很困惑为什么这不起作用。我只在班上的第二周。

有人可以解释为什么这不起作用以及我如何才能使它发挥作用? 谢谢

1 个答案:

答案 0 :(得分:1)

显然,你有几个问题。

  1. [self.l1.text isEqualToString:@"1"];这样的行没有做任何事情。您可以比较标签的文字,但不要检查测试结果。
  2. 您添加标签而不是标签'文本到self.dice数组。
  3. if行有语法错误。
  4. 使用数组而不是数组中的对象创建计数集。
  5. 将计数集中的计数存储在变量中,这样您就不会计算两次计数。
  6. 这里有一些固定代码:

    @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);
        }
    }