2013-07-02 58 views
0

我有一個NSPredicate和一組值。現在,我想搜索是否所有的NSPredicate都是true這個數組。我使用的是循環進行這樣的:NSArray上的多個NSPredicate

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:你說得對,我誤解了這個問題,對不起。 - 我認爲沒有比循環遍歷謂詞更好或更簡單的方法。 –