【问题标题】:NSPredicate : CoreData fetchRequest filtered by Array of dictionariesNSPredicate :由字典数组过滤的 CoreData fetchRequest
【发布时间】:2015-07-02 09:50:39
【问题描述】:

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

我有以下结构:

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

我想通过这些对过滤我的NSFetchRequest。 (假设CoreData中的属性名称相同)

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

【问题讨论】:

    标签: objective-c core-data nspredicate


    【解决方案1】:

    我认为您将无法使用IN,因此您需要使用多个ORs。概述:

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

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

    4. 使用以下方法从数组构建复合谓词:

      [NSCompoundPredicate orPredicateWithSubpredicates:array]
      

    如果性能是一个问题,请考虑使用替换变量而不是格式来构建单个谓词。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-12
      • 1970-01-01
      • 2012-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多