NSArray заполняется объектами bool

Мне заполнили NSArray bools (выраженный как число), и я должен протестировать, чтобы видеть, равен ли какой-либо объект в массиве 1. Как я могу сделать это?

6
задан Matt S. 4 May 2010 в 22:46
поделиться

2 ответа

BOOL не являются объектами. Если вы имеете в виду какой-то объект, представляющий булево число, например NSNumber, который реализует соответствующее isEqual:, вы могли бы просто сделать что-то вроде [array containsObject:[NSNumber numberWithBool:YES]].

12
ответ дан 8 December 2019 в 12:58
поделиться

Как говорит Чак, используйте - [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;
6
ответ дан 8 December 2019 в 12:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: