为啥使用 Core Data 的人想要在同一个托管对象模型中使用多个持久存储?

Posted

技术标签:

【中文标题】为啥使用 Core Data 的人想要在同一个托管对象模型中使用多个持久存储?【英文标题】:Why would someone using Core Data want to use more than one persistent store in the same Managed Object Model?为什么使用 Core Data 的人想要在同一个托管对象模型中使用多个持久存储? 【发布时间】:2011-06-23 16:30:53 【问题描述】:

我对 Core Data 还是很陌生,我正在努力理解它。

【问题讨论】:

【参考方案1】:

您可能会遇到希望将不同类型的数据存储在不同位置或具有不同行为的情况。例如,您可能有一个只读 sqlite 存储作为应用程序的一部分提供,其中包含一些默认数据,一个附加存储用于更新您从服务器下载的该数据集,第三个存储用于用户数据。或者,您可能会遇到这样的情况,您希望保留一些对象,而其他对象可以存在于内存存储中,并且不需要在应用程序的使用之间进行保存。

【讨论】:

迁移数据可以是一个 PITA,所以如果你有不稳定的数据模式,那么可能值得分割出来。我没有真正想过这些事情,好问题和好答案 +1 听起来您在第一个示例中描述的用例暗示服务器正在发送符合 Core Data 的持久存储。否则(除非我有任何误解),您可以简单地将数据导入您用于其他所有内容的同一存储中(只读数据除外)。 @Joshua Pokotilow,真的,如果这对您的应用程序有意义,您可以只拥有一个只读存储区和一个用于用户和应用程序数据的可编辑存储区。这取决于您希望如何组织它们以及是否希望将它们存储在不同的位置。例如,您可能想要备份用户数据,但可以将应用程序数据的更新存储在缓存目录中,因为您可以在必要时重新下载。同样,用户数据可能需要加密,而应用配置数据可能不需要。

以上是关于为啥使用 Core Data 的人想要在同一个托管对象模型中使用多个持久存储?的主要内容,如果未能解决你的问题,请参考以下文章

为啥调试器不知道我的 Core Data 生成的托管对象类上的方法? (附代码)

在 Core Data 中插入一个新的托管对象

使用 xcode 和 core-data 中的代码创建托管对象

Core Data 3 托管对象上下文

使用 Core Data 时,是不是保留非托管对象类及其托管对象版本

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