0

我已经使用轻量级迁移成功地为我的应用程序即将发布的 1.1 版本对我的核心数据模型进行了版本控制。我对这种方法的可维护性有疑问。

如果我再次在我的应用程序的 v1.2 中对模型进行版本化,并且用户从 v1.0 更新到 1.2,这两个迁移是否会依次成功应用?也就是说,如果我保留模型的版本,迁移是否会累积?

4

1 回答 1

3

如果两个迁移都是轻量级的,那么就不需要依次应用这两个迁移。由于轻量级迁移可能发生在

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

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

所以最终的结果是,Core Data 无法计算出如何从版本 1 迁移到版本 2 以及从版本 2 迁移到版本 3,但不能直接从版本 1 迁移到版本 3 的事件序列。

相反,如果您通过映射模型指定手动映射,那么您要么必须编写代码以累积应用所有手动映射,要么随着数据模型的发展提供 O(n^2) 映射。

于 2012-11-25T20:08:09.630 回答