2

我有 3 个实体:

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

我想要的是所有主题的列表,其中存在证书(没有重复)。根据我的初步阅读(主要是这个问题:CoreData performance: predicate on more to-many relationships),我发现最有效的方法(假设可能)是从证书级别开始,并导出主题列表的证书。

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

有没有一种方法可以做到这一点,而无需手动跟踪每个证书的关系并将找到的主题添加到某个NSSet或其他内容中?

感谢您的任何指示(或同样 - 建议告诉我不要再傻了,这就是我应该这样做的方式!)

4

2 回答 2

1

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

[NSPredicate predicateWithFormat:@"SUBQUERY(subtopics, $s, ANY $s.certificates != NULL).@count > 0"]
于 2013-06-10T17:02:18.030 回答
1

随心所欲地获取所有类别,不需要谓词,因为您想要所有类别。然后得到这样的主题(假设合理的关系名称):

NSArray *topics = [[categories valueForKeyPath:@"@distinctUnionOfObjects.subtopic"] valueForKeyPath:@"@distinctUnionOfObjectstopic"];
于 2013-06-10T17:02:51.430 回答