CoreData - 获取帖子,仅发送他们未删除的评论

时间:2012-09-03 14:32:51

标签: core-data nspredicate relationship core-foundation

我有两个系列:

- Post
- Comment

Post.comments = [comment1, comment2, ...]

comment.removed是一个布尔值。

我想抓取所有帖子,但排除已移除的comments。有没有办法在不重复OneToMany关系的情况下做到这一点?

以下是我的尝试:

ANY comments.removed == FALSE  // Posts that have at least one removed comment
ALL comments.removed == FALSE  // Posts that only have unremoved comments
(SUBQUERY(comments, $x, $x.removed == FALSE).@count > 0) // Same as the first one

2 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,您希望获得所有“发布”对象,但post.comments不应该是核心数据存储中定义的整个注释集,而只是一组注释没有删除。

这对于获取请求是不可能的(据我所知),因为获取请求的结果是托管对象上下文中的对象列表。获取请求无法返回与托管对象上下文中的原始不同对象。

答案 1 :(得分:0)

可能值得解释一下您不希望从CD中检索“已删除”注释的动机,当您可以在使用它们时以编程方式轻松地排除它们。音量是否足以成为性能负担?

在任何情况下,应该可以创建一个NSArrayController,依次绑定到每个评论集合,但设置一个获取谓词以排除“已删除”的评论。

请参阅apple docs on this subject了解更多信息 - 祝您好运!