Core Data轻量级迁移有多少个迁移步骤?

Posted

技术标签:

【中文标题】Core Data轻量级迁移有多少个迁移步骤?【英文标题】:How many migration steps does Core Data lightweight migration have? 【发布时间】:2013-10-25 14:21:12 【问题描述】:

我为我的 iPhone 应用程序使用 Core Data 和轻量级迁移。

假设我为应用创建了 3 个版本的数据模型。一位用户安装了我的应用程序的早期版本,其数据模型版本仍然是 v1。当用户将应用更新到最新版本时,数据模型版本为 v1、v2 和 v3,更新过程中发生了什么?

sqlite数据库先从v1迁移到v2再从v2迁移到v3?还是直接从 v1 跳到 v3?

【问题讨论】:

【参考方案1】:

在内部,我相信 Core Data 轻量级迁移会按顺序将更改应用到每个后续版本,但出于您的目的,您可以将其视为直接发生到最终版本的迁移。据我所知,在轻量级迁移期间,没有“钩子”来拦截和运行版本之间的代码。

如果您需要更改数据或添加新数据,则应动态确定模型版本并做出相应反应。

【讨论】:

我也相信一般过程应该是一个版本一个版本的迁移,或者至少在决定最终模式时,每个历史模型模式都会被引用。但实现细节很重要。 虽然不是这样,请看我的回答。【参考方案2】:

Core Data 不关心版本的顺序,也不关心任何中间版本。它只知道源版本和目标版本,它会直接在它们之间迁移。

不过,通常对于轻量级迁移,这将可以正常工作。

【讨论】:

以上是关于Core Data轻量级迁移有多少个迁移步骤?的主要内容,如果未能解决你的问题,请参考以下文章

Core Data 轻量级迁移后执行自定义代码

Core Data轻量级迁移错误

Core Data(iPhone)实现“自动轻量级迁移”

Core Data 轻量级迁移 - 现有实体是不是添加了新属性?

考虑使用 Core Data 轻量级迁移的多个数据模型版本

iOS Core Data 不执行轻量级迁移