核心数据模型迁移

Posted

技术标签:

【中文标题】核心数据模型迁移【英文标题】:Core data model migration 【发布时间】:2014-02-03 08:34:24 【问题描述】:

我想迁移两个模型的核心数据。根据苹果文档,有两种方法可以迁移模型,如轻量级迁移和映射模型。我的困惑是在哪种情况下我需要使用核心数据迁移的映射模型方式。

【问题讨论】:

【参考方案1】:

当您添加/修改/删除属性或实体时执行轻量级迁移 - 通常是简单的操作。

当您必须将一种模式转换为另一种模式时,需要使用映射选项。 假设您和实体A,但您需要将其一分为二:BC。 然后你必须告诉 CoreData 如何在方案之间映射实体和属性。

这个过程比轻量级迁移要复杂一点。它需要创建映射模型文件,如果需要,定义NSEntityMigrationPolicy子类等等,这取决于您的需要。

【讨论】:

感谢 Oczko 的快速回复...如果我正确理解了将实体 A 拆分为实体 B 和实体 C 等两个现有实体时需要映射模型。但我有一个疑问,我可以通过以下方式处理这种情况比如在创建新模型时从实体 A 中删除属性并手动添加到 B 和 C 中。通过这种方式 LightWeight 迁移是否足够? 如果应用程序正在开发中,并且您不介意丢失数据,那很好。否则就不安全了,因为 CoreData 不知道如何填充新添加的属性。

以上是关于核心数据模型迁移的主要内容,如果未能解决你的问题,请参考以下文章

核心数据迁移问题:“持久存储迁移失败,缺少源托管对象模型。”

核心数据模型版本控制和数据迁移

没有找到适合核心数据迁移的映射模型

使用拆分核心数据模型进行迁移

通过迁移将核心数据实体及其数据移动到新的核心数据模型文件中

无需迁移即可替换核心数据模型