核心数据和累积轻量级迁移

时间:2012-11-25 19:46:44

标签: ios core-data core-data-migration

我已经使用轻量级迁移为我的应用程序的即将推出的1.1版成功编写了我的核心数据模型版本。我对这种方法的可维护性有疑问。

如果我再次在我的应用程序的v1.2中修改我的模型,并且用户从v1.0更新到1.2,那么两个迁移是否会按顺序成功应用?也就是说,如果我保留模型的版本,迁移是否会累积?

1 个答案:

答案 0 :(得分:3)

如果两个迁移都是轻量级的,那么就不需要按顺序应用这两个迁移。自lightweight migrations can occur on以来:

  • 简单添加新属性
  • 删除属性
  • 非可选属性变为可选
  • 可选属性变为非可选属性,并定义默认值 值
  • 重命名实体或财产

在最后一种情况下,您提供商店中使用的名称(“规范名称”)。默认情况下,这是属性名称,因此它最终是在数据模型的第一个版本中调用属性的任何内容。然后,只要您单独保留规范名称,就可以任意更改属性名称。

因此,净影响是没有一系列事件,其中Core Data可以弄清楚如何从版本1迁移到版本2以及从版本2迁移到版本3,但不能直接从版本1迁移到版本3.

相反,如果您通过映射模型指定手动映射,那么您将不得不编写代码以累积地应用所有手动映射,或者在数据模型前进时提供O(n ^ 2)映射。