使用魔法记录进行核心数据迁移

Posted

技术标签:

【中文标题】使用魔法记录进行核心数据迁移【英文标题】:Core Data Migration using magical record 【发布时间】:2016-04-24 06:20:07 【问题描述】:

我已在商店中发布了我的应用程序。最初,应用程序中没有使用 CoreData,因为它很简单。现在我必须使用它来持久化数据。我发布的应用程序中有 xcdatamodel 但没有实体,它是空的。现在,当我要在其中添加新实体时,我的新版本是否会对那些已经从应用商店安装我的应用的用户造成问题?

如果我以前的版本没有实体,我是否需要创建一个新的模型版本?

我还要使用 MagicalRecord。 setupCoreDataStackWithAutoMigratingSqliteStoreNamed 方法是否足以执行迁移?

【问题讨论】:

【参考方案1】:

提到的

setupCoreDataStackWithAutoMigratingSqliteStoreNamed

应该足够了。

【讨论】:

是的,这一行“setupCoreDataStackWithAutoMigratingSqliteStoreNamed”起到了神奇的作用。无需版本数据模型。 我添加了“setupCoreDataStackWithAutoMigratingSqliteStoreNamed”,然后我对数据模型进行了更改,添加了实体,删除了一些并继续做这个实验。我发现数据正在迁移并且没有崩溃。更新模型后,原始模型中存储的数据仍然存在,无需进行版本控制。这是正确的方法吗? 当然 - 这不是您所期望的吗? 是的,我希望我的应用程序不会崩溃,也不会丢失用户数据。我进行了几个实验,事情似乎按预期进行。我有疑问的是每次我们进行更改时是否需要创建更新版本的模型?在我的情况下,如果没有版本控制,一切似乎都可以工作。

以上是关于使用魔法记录进行核心数据迁移的主要内容,如果未能解决你的问题,请参考以下文章

使用自定义 NSEntityMigrationPolicy 进行核心数据迁移 - 效率?

将旧数据模型文件复制到新项目中进行轻量级核心数据迁移

如何进行核心数据迁移?

核心数据版本控制和迁移

加密核心数据迁移实体名称不匹配问题

跳过核心数据迁移