CoreData取回请求-取回所有有关系的对象



我有三个实体:

Topic <--->> subTopic <--->> Certificate.

我想要的是所有主题的列表,其中证书存在(没有重复)。根据我最初的阅读(主要是这个问题:CoreData性能:多对多关系上的谓词),我发现最有效的方法(假设可能)是从证书级别开始,并从证书列表派生主题列表。

但这就是我所知道的。如何指定当我想要返回主题列表时,我想要的列表将基于所有证书?是否可以为fetchrequest指定一个可以返回主题列表的谓词?

是否有一种方法可以做到这一点,而不只是手动遵循每个证书的关系,只是将发现的主题添加到NSSet或其他东西?

谢谢你的建议(或者同样的建议,告诉我不要再犯傻了,我应该这样做!)

目前我无法对此进行测试,但是使用此谓词对Topic实体进行获取请求应该可以工作:

[NSPredicate predicateWithFormat:@"SUBQUERY(subtopics, $s, ANY $s.certificates != NULL).@count > 0"]

获取所有类别,无论您想要什么,不需要谓词,因为您想要所有类别。然后像这样获取主题(假设有合理的关系名称):

NSArray *topics = [[categories valueForKeyPath:@"@distinctUnionOfObjects.subtopic"] valueForKeyPath:@"@distinctUnionOfObjectstopic"];

最新更新