核心数据轻量级迁移 - 何时版本?
Posted
技术标签:
【中文标题】核心数据轻量级迁移 - 何时版本?【英文标题】:Core Data Lightweight Migration - when to version? 【发布时间】:2012-11-26 15:40:13 【问题描述】:我可以执行以下操作吗?
-
从应用程序的 v1.0 开始。版本数据模型,将新版本指定为活动模式
在 appDelegate 中设置正确的选项以使用轻量级迁移创建 NSPersistentStoreCoordinator
对模型进行简单的更改并更新类。编译并验证一切正常。
在不更改版本的情况下再次更改数据模型,并再次更新类
当然,当我运行时,数据模型将不兼容,因为我在没有版本控制的情况下更改了它。但由于我不会发布中间版本,我怀疑从 v1.0 更新到双更新数据模型时数据迁移应该可以正常工作。
这准确吗?
【问题讨论】:
【参考方案1】:只要满足以下条件,它就会起作用:
-
您已为每个步骤创建了一个新模型版本;因此,在上面的示例中,最后应该有三个:原始、中间、最终。
应用程序必须能够进行从 1 到 3 的轻量级迁移。如果不能,如果磁盘上的数据仍然是 1 的结构,则它不会经过 2。
如果所有这些都是真的,那么它会起作用。您甚至可以在最终版本中不发布 v2(尽管它们很小而且通常不值得付出努力)。
在开发过程中,我的建议是始终保留 v1 数据,只更改 v2 并在每次需要调整 v2 时重新迁移。那么就没有中间需要处理了。但是,在与 Beta 测试人员打交道/工作时,这并不总是可行的。
【讨论】:
谢谢马库斯。但在第 4 步中,我不版本化数据模型。我只是改变它(和类)。如果我将两组更改都限制为仅与轻量级兼容的更改,那么核心数据不应该能够正确推断 v1 -> v3 迁移,而无需了解 v2(事实上,v3 只是一些就地更改到 v2,而不是新版本)?请记住,v2 永远不会流行。 是的,除非您在磁盘上有 v2 数据,否则 Core Data 会抛出错误,因为它没有源模型来计算增量。要进行迁移,Core Data 需要任何迁移的源和目标。如果您要将数据重置回 V1 或重新开始,那么您可以这样做。 谢谢 - 是的,我假设没有设备会有 v2 数据。一切都是 v1,只有模拟器和我的测试设备曾经迁移到 V2,我将在 V2 上重新安装。以上是关于核心数据轻量级迁移 - 何时版本?的主要内容,如果未能解决你的问题,请参考以下文章