2013-07-02 2 views
0

У меня есть массив NSPredicate и массив значений. Теперь я хочу найти, все ли NSPredicate для этого массива true. Я использую цикл для него, как это:Несколько NSPredicate на NSArray

bool valid = true; 
for(NSPredicate* predicate in predicates){ 
       if([[searchValues filteredArrayUsingPredicate:predicate] count] == 0){ 
        valid = false; 
        break; 
       } 
      } 

Есть ли лучший способ сделать это значение каким-то образом избежать петли на NSPredicate?

ответ

2
NSArray *predicates = ... // your array of predicates 
NSPredicate *andPredicate = [NSCompoundPredicate andPredicateWithSubpredicates:predicates]; 
BOOL valid = [[searchValues filteredArrayUsingPredicate:andPredicate] count] > 0; 
+0

Нет, это не то, что я намереваюсь сделать. Здесь сложный предикат должен быть истинным для каждого значения, в то время как я хочу, чтобы каждый предикат удовлетворялся хотя бы одним значением данных. См. Приведенный выше код. – Aarkan

+0

@Aarkan: Вы правы, я неправильно понял вопрос, извините. - Я не думаю, что есть лучший или более простой способ, чем перебирать предикаты так же, как и вы. –

Смежные вопросы