我有3个实体:
Topic <--->> subTopic <--->> Certificate.
我想要的是所有主题的列表,其中存在证书(没有重复项)。基于我的初步阅读(主要是这个问题:CoreData performance: predicate on more to-many relationships)我得出结论,最有效的方式(假设可能)是从证书级别开始,并从证书列表中获取主题列表。
但就我而言。我如何指定当我想要一个主题列表时,我想要的列表将基于所有证书?是否可以为fetchrequest指定可以返回主题列表的谓词。
有没有一种方法可以做到这一点,而无需手动跟踪每个证书的关系,只是将找到的主题添加到NSSet
或其他什么内容?
感谢任何指示(或同样 - 建议告诉我不要再傻了,这就是我应该这样做的方式!)
答案 0 :(得分:1)
我目前无法对此进行测试,但使用此谓词的Topic实体上的获取请求应该有效:
[NSPredicate predicateWithFormat:@"SUBQUERY(subtopics, $s, ANY $s.certificates != NULL).@count > 0"]
答案 1 :(得分:1)
获取所有类别,无论您想要什么,都不需要谓词,因为您需要所有类别。然后得到这样的主题(假设合理的关系名称):
NSArray *topics = [[categories valueForKeyPath:@"@distinctUnionOfObjects.subtopic"] valueForKeyPath:@"@distinctUnionOfObjectstopic"];