0

我正在尝试NSLog计算我的ViewController. 我在 上创建了 3 个标签storyboard,然后连接了IBOutlet. 我将这些标签中的每一个都添加到了一个NSMutableArray和 alloc initWithObjects 中。我手动将每个标签的文本设置为 1、2 和 3。

现在到我的问题。

我想使用 aNScountedSet来计算标签数组中 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 个红色。我的老师告诉我这行不通,还有其他方法可以做到。而我已经以另一种方式做到了。我真的很困惑为什么这不起作用。我只在我班的第 2 周。

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

4

1 回答 1

1

很明显,你有几个问题。

  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);
    }
}
于 2016-01-23T04:44:13.620 回答