检查NSMutableArray的整个布尔值

时间:2014-06-29 22:45:25

标签: objective-c ios7 nsmutablearray

我有一个数组,我在下面的代码中填充了布尔值。

for(int i = 0; i < 15; i++){
  int checkVal = [(NSNumber *)[__diceValue objectAtIndex:i] intValue];
    if(checkVal == matchVal){
        [_diceMatch replaceObjectAtIndex:i withObject:[NSNumber numberWithBool:y]];
    }
}

编写条件的最短路径是检查数组“_diceMatch”是否包含所有真值?

3 个答案:

答案 0 :(得分:2)

如果您的数组只能包含值&#34; true&#34; (@YES)或&#34; false&#34; (@NO) 然后你可以简单地检查是否缺少@NO

if (![_diceMatch containsObject:@NO]) {
   // all elements are "true"
}

答案 1 :(得分:0)

NSUInteger numberOfTrueValues = 0;

for (NSNumber *value in _diceMatch) {
   if ([value boolValue]) {
      numberOfTrueValues++;
   }
}

答案 2 :(得分:-1)

最短路?也许不吧。最简单的方法?是

- (BOOL)isDictMatchAllTrue {
    for (NSNumber *n in _dictMatch) {
        if (![n boolValue]) return NO;
    }
    return YES;
}

或者你不喜欢写循环

NSSet *set = [NSSet setWithArray:_diceMatch];
return set.count == 1 && [[set anyObject] boolValue];

注意:当数组为空但第二个版本返回YES时,第一个版本返回NO

您可以添加

if (_dictMatch.count == 0) return YES; //or NO

修复它。