2016-09-23 75 views
1

我想我可能在core data运作的方式失去了一些东西,但我有两个实体的关系:收集项目(10个属性)。集合具有多对多关系项目(不反过来,不对删除进行操作,排序)。CoreData休息一对多时,分配给多个家长实体

如果我将NSManagedObject项添加到不同的集合,有时先前创建的集合失去与其项目的关系。让我通过使用SOMETIMES这个词来解释我的意思。

在不同的集合中有400个独特的物品。我从web服务加载集合。并有2个独立的电话:

1)第一次调用返回小集合(我们称之为集合A)的6个项目及其所有属性(10)。

2)第二次调用返回400个项目的5个集合(每个集合具有不同顺序的相同项目)。在400个项目中,还有6个以前返回(收集A是完整收集的子集)

第一个响应之后,所有数据都被解析并保存。第二次调用后,新的数据被解析并保存。如果事后我要求收集A - 它没有任何项目(关系错误与它无关)。

PLOT TWIST:如果在解析每个新集合之前,我要求集合A的项目数 - 关系保持不变,并且所有项目都可用。

已经用了2天。不知道还有什么要检查的。上下文相同,上下文在添加每个新实体后保存。如前所述,Item对象没有反向关系。

缺少什么我在这里?...

回答

1

这似乎是某种不一致的CoreData代码深的地方。除了CoreData中的错误,我找不到任何其他合理的解释。

上有逆多对多关系项目似乎涵盖了这个错误。

+0

我认为你是正确的 - 问题是缺少的反向关系。根据CoreData编程指南,“强烈建议您在两个方向上建模关系,并适当指定反向关系。核心数据使用此信息确保对象图形的一致性(请参阅处理关系和对象图形完整性)“。 – pbasdf

+0

感谢您输入@pbasdf。看到核心数据只是失去了这种关系,实在是太奇怪了......有时候,我可以打破我的代码,删除简单的日志语句(除了获取日志所需的数据外,这些语句除了别的以外不做其他事情)。 –