0

父对象与它的自身有很多关系,因为它是子对象。

核心数据模型

当我获取一个对象的所有子对象时,请求还通过反向关系返回父对象。

在获取请求中是否有办法排除反向关系,以便结果仅包含子对象?

到目前为止,我的解决方案是在自定义 NSManagedObject 类中为 Object 实现一个方法,该方法返回一个过滤后的子数组。

-(NSArray *)getChildrenOfObjectWithoutParent:(int)parentId
{
    NSArray *results = [[self.children allObjects] filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(objId != %d)", parentId]];
    return results;
}
4

1 回答 1

2

一个更干净的解决方案是有两个关系:

  • children作为从Object到自身的多对多关系,
  • parent作为从Object到自身的一对一关系

并将这些定义为相互的逆关系。

然后self.children准确地给出子对象,没有任何问题或技巧。

在此处输入图像描述

(我从您的描述中假设一个对象只能有一个父对象。如果一个对象有多个父对象,您也可以将其定义parent一对多关系。)

此设置的另一个优点是您可以为关系定义不同的核心数据“删除规则”。

一个有用的例子是:

  • 删除关系的规则“级联” children,以及
  • 删除关系的“无效”规则parent

其效果是,如果一个对象被删除,它的所有子对象也被自动删除,并且该对象从父对象子对象中删除。

于 2012-12-11T18:58:49.237 回答