我已经使用轻量级迁移成功地为我的应用程序即将发布的 1.1 版本对我的核心数据模型进行了版本控制。我对这种方法的可维护性有疑问。
如果我再次在我的应用程序的 v1.2 中对模型进行版本化,并且用户从 v1.0 更新到 1.2,这两个迁移是否会依次成功应用?也就是说,如果我保留模型的版本,迁移是否会累积?
我已经使用轻量级迁移成功地为我的应用程序即将发布的 1.1 版本对我的核心数据模型进行了版本控制。我对这种方法的可维护性有疑问。
如果我再次在我的应用程序的 v1.2 中对模型进行版本化,并且用户从 v1.0 更新到 1.2,这两个迁移是否会依次成功应用?也就是说,如果我保留模型的版本,迁移是否会累积?
如果两个迁移都是轻量级的,那么就不需要依次应用这两个迁移。由于轻量级迁移可能发生在:
在最后一种情况下,您提供商店中使用的名称(“规范名称”)。这是默认情况下的属性名称,因此它最终是在数据模型的第一个版本中调用的任何属性。然后,只要不使用规范名称,您就可以任意更改属性名称。
所以最终的结果是,Core Data 无法计算出如何从版本 1 迁移到版本 2 以及从版本 2 迁移到版本 3,但不能直接从版本 1 迁移到版本 3 的事件序列。
相反,如果您通过映射模型指定手动映射,那么您要么必须编写代码以累积应用所有手动映射,要么随着数据模型的发展提供 O(n^2) 映射。