【问题标题】:NSArray filled with bool objectsNSArray 填充了 bool 对象
【发布时间】:2010-05-04 22:39:03
【问题描述】:

我有一个用布尔值(表示为数字)填充的 NSArray,我需要测试看看数组中是否有任何对象等于 1。我该怎么做?

【问题讨论】:

  • bool 对象是什么意思?
  • 您是否尝试将整数添加到 NSArray?因为那做不到。

标签: cocoa boolean nsarray


【解决方案1】:

BOOL 不是对象。假设你的意思是一些对象表示一个像 NSNumber 这样的布尔值,它实现了一个正确的isEqual:,你可以做一些像[array containsObject:[NSNumber numberWithBool:YES]] 这样的事情。

【讨论】:

    【解决方案2】:

    正如 Chuck 所说,使用 -[NSArray containsObject:[NSNumber numberWithBool:YES]]。作为一个思想实验,这里有一些实现目标的其他方法......

    您可以使用NSPredicate 或使用新的块 API 来执行此操作:

    NSArray *myArr //decleared, initialized and filled
    
    BOOL anyTrue = [myArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"boolValue == 1"]].count > 0;
    

    BOOL anyTrue = [myArray indexesOfObjectsPassingTest:^(id obj, NSUInteger idx, BOOL *stop) {
      if([obj boolValue]) {
        *stop = YES;
      }
      return [obj boolValue];
    }].count > 0;
    

    你也可以使用键值编码,虽然我不确定它的相对效率:

    [[myArray valueForKeyPath:@"@sum.boolValue"] integerValue] > 0;
    

    【讨论】:

    • @Chuck,是的,如果我不得不在真实代码中阅读这些解决方案中的任何一个,我会有点生气。不过,有趣的小函数式编程大脑练习。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多