【发布时间】:2012-11-25 19:46:43
【问题描述】:
我已使用轻量级迁移成功地为即将发布的 1.1 版应用程序版本化了我的核心数据模型。我对这种方法的可维护性有疑问。
如果我再次在我的应用程序的 v1.2 中对模型进行版本化,并且用户从 v1.0 更新到 1.2,这两个迁移是否会依次成功应用?也就是说,如果我保留模型的版本,迁移是否会累积?
【问题讨论】:
标签: ios core-data core-data-migration
我已使用轻量级迁移成功地为即将发布的 1.1 版应用程序版本化了我的核心数据模型。我对这种方法的可维护性有疑问。
如果我再次在我的应用程序的 v1.2 中对模型进行版本化,并且用户从 v1.0 更新到 1.2,这两个迁移是否会依次成功应用?也就是说,如果我保留模型的版本,迁移是否会累积?
【问题讨论】:
标签: ios core-data core-data-migration
如果两个迁移都是轻量级的,则无需依次应用这两个迁移。自lightweight migrations can occur on:
在最后一种情况下,您提供商店中使用的名称(“规范名称”)。这是默认情况下的属性名称,因此它最终是在数据模型的第一个版本中调用的任何属性。然后,只要不使用规范名称,您就可以任意更改属性名称。
因此,最终结果是,Core Data 无法确定如何从版本 1 迁移到版本 2 和从版本 2 迁移到版本 3,但不能直接从版本 1 迁移到版本 3。
相反,如果您通过映射模型指定手动映射,那么您要么必须编写代码以累积应用所有手动映射,要么随着数据模型的发展提供 O(n^2) 映射。
【讨论】: