插入一个新的"很多"以及多个反向关系故障。宾语

时间:2014-10-10 16:26:05

标签: ios core-data

(Xcode 6 + iOS 8 iPad Air Simulator)

我正在一对多关系的“多”实体中创建一个新的托管对象。但它会导致“一个”实体上的多对多关系错误。这是核心数据的正常行为吗?

我有这样的架构:

Entity:         Parent             Child  
Relationship:   children<------->> parent

父母可以有很多孩子 一个孩子只能有一个父母

我以这种方式创建了一个孩子:

- (void)createChildForParent:(Parent *)parent
{
   Child *newChild = <instantiate new Child managed object>

    newChild.parent = parent;       <- fault fires here.  Log says: CoreData: annotation: to-many relationship fault "children" for objectID <the Parent> ... fulfilled from database.  Got 10000 rows
}

在我的实际应用程序中,我的任务是为许多父母创造了许多孩子。每次我创建一个孩子时,父母的多对多故障都会触发。每次有一个伴随的SQL返回数千行 - yikes! Instrument的Core Data Cache Misses充斥着RCM条目。我不希望父亲的关系错误发生,因为我只插入一个Child。

我做错了什么?

更新

如果我没有将其设置为孩子的一对一关系的反向关系,则父上的关系错误不会触发。

This SO post是一个很好的信息来源。这似乎是标准的核心数据行为。

我可以理解CD需要有关子集的信息,以便在模型中强制执行Optional和Minimum / Maximum Count属性。但我不明白为什么它必须在整个集合中出错,即使我将父对象与子节点的关系设置为可选,并且没有最小/最大计数界限(默认值)。听起来太极端(和懒惰)。

0 个答案:

没有答案