我有一个充满bool的NSArray(表示为数字),我需要测试以查看数组中的任何对象是否等于1.我该怎么办?
答案 0 :(得分:12)
BOOL不是对象。假设你的意思是某个对象代表一个类似于NSNumber的布尔值来实现一个正确的isEqual:
,你可以做一些像[array containsObject:[NSNumber numberWithBool:YES]]
这样的事情。
答案 1 :(得分:6)
正如查克所说,使用-[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;