2015-04-24 53 views
0

是否可以使用字典數組創建NSPredicate?NSPredicate:CoreData fetchRequest由字典數組過濾

我有以下結構:

[{ name: "foo", city:"Paris"},{name:"bar", city:"London"}] 

一個我希望我的NSFetchRequest通過這些對過濾。 (假設CoreData中的屬性名稱相同)

傳遞數組時,我可以使用關鍵字IN。但是我不知道如何使用這些字典來工作。

回答

1

我不認爲你將能夠使用IN,所以你需要使用一些OR s。大綱:

  1. 遍歷數組的所有元素。
  2. 對於每個元素(dictionary),構建體的形式的謂詞:謂詞

    [NSPredicate predicateWithFormat:@"name == %@ AND city == %@",[dictionary objectForKey:@"name"], [dictionary objectForKey:@"city"]]; 
    
  3. 每個這樣的謂詞添加到一個的NSMutableArray(array

  4. 從陣列構建化合物謂詞使用:

    [NSCompoundPredicate orPredicateWithSubpredicates:array] 
    

如果性能是一個問題,請考慮使用替換變量而不是格式構建各個謂詞。