【问题标题】:NSPredicate for a Core Data Search用于核心数据搜索的 NSPredicate
【发布时间】:2013-08-28 22:04:04
【问题描述】:

我有 3 个NSManagedObjets;人物、资料和收藏。

我想使用NSPredicate 来获取ThePerson 拥有的所有Collections 的列表。

示例:Scott 拥有位于 Letters 集合中的 objectA 和 objectB 以及位于 Numbers 集合中的 object1。

我希望能够执行获取请求并取回收集的字母和数字。

我试过了:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY stuffs.persons == %@", person];

还有:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SUBQUERY(stuffs, $s, ANY $s.persons == %@)", scott];

有什么建议吗?

【问题讨论】:

    标签: ios objective-c core-data nspredicate


    【解决方案1】:

    您的SUBQUERY 语法错误(有关完整说明,请参阅this answer 或this answer)。它应该是这样的:

    SUBQUERY(stuffs, $s, ANY $s.persons == %@).@count > 0
    

    【讨论】:

      【解决方案2】:

      由于您似乎已经引用了ThePerson 对象,因此您不需要进行提取或使用谓词。您可以遍历已声明的关系以获取集合。您可以通过以下方式获得ThePerson 拥有的所有Collections:

      NSSet *collections = [person valueForKeyPath:@"stuffs.collections"];
      

      【讨论】:

      • 还有一个条件我忘了说:Scott's Letter Collection 可能包含objectA 和objectB,而Jen's Letter Collection 可能只包含objectA。有了这个要求,我不相信这个解决方案会奏效吗?还是我错了?很抱歉,我最初没有在问题中说明这一点。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-29
      • 2013-01-12
      • 2015-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多