我有两个集合:
- 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
如果我正确理解您的问题,您希望获得所有"Post"对象,但post.comments
不应该是核心数据存储中定义的全部注释集,而应该是未删除的注释集。
这在fetch请求中是不可能的(据我所知),因为fetch请求的结果是托管对象上下文中的对象列表。获取请求不能返回与托管对象上下文中的原始对象不同的新对象。
也许有必要解释一下你不想从CD中检索"已删除"的评论的动机,因为在使用它们时,你可以很容易地通过编程将它们排除在外。音量是否大到足以成为性能负担?
在任何情况下,都应该可以创建一个NSArrayController
,依次绑定到每个注释集合,但设置一个提取谓词以排除"已删除"的注释。
请参阅关于这个主题的苹果文档了解更多-祝你好运!