NSPredicate:CoreData fetchRequest由字典数组过滤

时间:2015-04-24 00:07:42

标签: objective-c core-data nspredicate

是否可以使用字典数组创建NSPredicate?

我有以下结构:

> 'aaba'.replace('a','').replace('b','')
< ''

我希望通过这些对过滤我的[{ name: "foo", city:"Paris"},{name:"bar", city:"London"}] 。 (假设属性在CoreData中具有相同的名称)

传递数组时,我可以使用关键字NSFetchRequest。但我不知道如何使用一系列字典来完成这项工作。

1 个答案:

答案 0 :(得分:1)

我认为您无法使用IN,因此您需要使用多个OR。概括地说:

  1. 遍历数组的所有元素。
  2. 对于每个元素(dictionary),构造一个形式的谓词:

    [NSPredicate predicateWithFormat:@"name == %@ AND city == %@",[dictionary objectForKey:@"name"], [dictionary objectForKey:@"city"]];
    
  3. 将每个此类谓词添加到谓词的NSMutableArray(array

  4. 使用以下命令从数组构建复合谓词

    [NSCompoundPredicate orPredicateWithSubpredicates:array]
    
  5. 如果性能是一个问题,请考虑使用替换变量而不是格式来构建单个谓词。