Мне заполнили NSArray bools (выраженный как число), и я должен протестировать, чтобы видеть, равен ли какой-либо объект в массиве 1. Как я могу сделать это?
BOOL не являются объектами. Если вы имеете в виду какой-то объект, представляющий булево число, например NSNumber, который реализует соответствующее isEqual:
, вы могли бы просто сделать что-то вроде [array containsObject:[NSNumber numberWithBool:YES]]
.
Как говорит Чак, используйте - [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;