在 Core Data 中加载具有关系的托管对象时的标准行为是啥?

Posted

技术标签:

【中文标题】在 Core Data 中加载具有关系的托管对象时的标准行为是啥?【英文标题】:What is the standard behavior when loading Managed Objects with relations in Core Data?在 Core Data 中加载具有关系的托管对象时的标准行为是什么? 【发布时间】:2013-04-11 23:45:45 【问题描述】:

在谈论 Core Data 时,我面临一个常见但简单的问题。在一个简单的 Master-Detail 示例中,一个名为“Category”的实体与一个名为“Products”的实体具有(对多)关系,在获取类别时在加载时会发生什么?

类别是否也会自动加载其相关产品?还是我们仍然需要在 Detail View 中获取它们?

【问题讨论】:

【参考方案1】:

我认为您想阅读 Core Data faults。它们为核心数据系统提供了一种方法,可以将您获取的对象(例如类别)返回给您,而无需立即加载所有相关的产品。相反,products 关系将包含 fault - 实际上是在您需要时为您提供真实 Product 实例的承诺。

稍后,当您访问 Category 的 products 关系时,Core Data 将自动透明地加载该关系的内容,而无需您再次运行 fetch。这称为“意识到”或“触发”错误,您无需采取任何额外措施。

【讨论】:

以上是关于在 Core Data 中加载具有关系的托管对象时的标准行为是啥?的主要内容,如果未能解决你的问题,请参考以下文章

在 Core Data 中加载 csv 文件

Core Data 托管对象上下文线程同步

Core Data 应用程序不会从持久存储中加载数据

如何在 Firebase 实时数据库中加载/检索多对多关系

Core Data 中一对多关系的正确 NSPredicate 格式

删除时如何手动管理Core Data关系