Core data CoreData-获取帖子,仅获取未删除的评论

Core data CoreData-获取帖子,仅获取未删除的评论,core-data,nspredicate,relationship,core-foundation,Core Data,Nspredicate,Relationship,Core Foundation,我有两个收藏: - Post - Comment Post.comments = [comment1, comment2, ...] comment.removed是一个布尔值 我想获取所有帖子,但不包括已删除的评论。有没有一种方法可以避免重复一对一的关系 以下是我尝试过的: ANY comments.removed == FALSE // Posts that have at least one removed comment ALL comments.removed == FALSE

我有两个收藏:

- Post
- Comment

Post.comments = [comment1, comment2, ...]
comment.removed
是一个布尔值

我想获取所有帖子,但不包括已删除的
评论。有没有一种方法可以避免重复一对一的关系

以下是我尝试过的:

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
不应是核心数据存储中定义的完整注释集,而应仅是未删除的注释集


就我所知,这在获取请求中是不可能的,因为获取请求的结果是托管对象上下文中的对象列表。获取请求不能返回与托管对象上下文中的原始对象不同的新对象

也许有必要解释一下您不想从CD中检索“已删除”的注释的动机,因为在使用它们时,您可以通过编程很容易地将它们排除在外。容量是否足以成为性能负担

在任何情况下,都可以创建一个
NSArrayController
,依次绑定到每个注释集合,但设置一个提取谓词以排除“已删除”的注释


更多信息,请参见第页-祝你好运

您是否使用标量值,或者您的
属性类型是
NSNumber
?尝试使用
NO
而不是
FALSE
[NSNumber numberwhithbool:NO]
删除的
属性是布尔值。当然,getter/setter使用NSNumber与CoreData接口。实际上,
removed==FALSE
可以很好地处理其他查询(例如,在查找未移动的帖子时)。我只需要一种在过滤子实体时包含子实体的方法。但是,“您所尝试的”是否有效?它们会产生预期的结果,但这不是我想要的。我只是解释了我试图得到的过滤子实体。他们没有过滤
Comment
,而是过滤
Post
:(检索
Post.comments[removed=FALSE]后)
将直接在UITableViewController中使用。如果获取请求无法筛选子实体,我必须迭代
Post.comments
,并在将删除的注释发送到表视图之前排除它们。与性能无关,我只是认为这很难看。听起来你好像在试图显示所有未删除的注释,按顺序by post,在表视图中。--是这样吗,还是您只想为某个特定的post添加未删除的注释?此外,OP不清楚这是否是iOS特有的。