我有一个数组,我在下面的代码中填充了布尔值。
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”是否包含所有真值?
答案 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
修复它。