NSArray充满了bool对象

时间:2010-05-04 22:39:03

标签: cocoa boolean nsarray

我有一个充满bool的NSArray(表示为数字),我需要测试以查看数组中的任何对象是否等于1.我该怎么办?

2 个答案:

答案 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;