一旦实体更新,Coredata 关系就会中断

Posted

技术标签:

【中文标题】一旦实体更新,Coredata 关系就会中断【英文标题】:Coredata relationship breaks once the entity is updated 【发布时间】:2014-03-03 06:07:36 【问题描述】:

我正在使用 coredata 通过 Web 服务在我的应用程序中保存服务器数据,并将关系作为对象存储到实体中。

我有很多实体,例如“灵感”和“产品”,它们彼此相关。每当在“过滤器”的第三个实体中更新记录时,我就会遇到问题,然后实体的关系会中断,我无法对实体应用过滤器。

[object addRelatedInspirationsObject:related];

这就是我保存人际关系的方式。我无法弄清楚为什么在更新与实体没有直接链接的实体后关系会被破坏。

如果我获取并保存任何一个实体(如“灵感”)的数据并保存,那么所有的关系都会重新开始工作。

【问题讨论】:

从您提供的代码中它应该可以工作,但是从您的问题来看,不清楚您在 Filters 实体中正在做什么。您可以提供更多代码和解释,否则可能很难提供帮助。 【参考方案1】:

您的代码应该可以工作。以下是您需要检查的两件事:

在调用方法时确保 related 不是 nil。 确保在有效的托管对象上下文中调用 save

【讨论】:

【参考方案2】:

从您的问题看来,实体之间存在一对多的关系。通过您提供的代码,一切都应该正常工作。只需确保您使用的是来自 object.filter(或 obj1.obj2.filter)等关系的 Filter 对象,而不是通过 Filter 实体上的直接 NSPredicate 访问它并更新它。如果您使用 FRC,您可能还需要针对父实体生成故障,以获取您的 UI 更新。

【讨论】:

以上是关于一旦实体更新,Coredata 关系就会中断的主要内容,如果未能解决你的问题,请参考以下文章

如何更新CoreData中另一个实体的子实体

在 CoreData 中更新和编辑实体

Core Data + iCloud,更改通知插入和删除关系中的对象但不更新关系中现有实体的属性

Coredata 合并关系而不是覆盖它

Coredata关系实体创建

CoreData 实体和属性之间的关系