未发布的xcdatamodel版本和轻量级迁移



如果我在发行版A和发行版B之间有多个未发布的xcdatamodel版本,如果我删除了未发布的版本,那么一旦我向公众发布,轻量级迁移还会起作用吗?

这里有一个更离散的例子:

xcdatamodel version 1.0  --> Release to public A
xcdatamodel version 1.1  --> unreleased (based on v1.0)
xcdatamodel version 1.2  --> unreleased (based on v1.1)
xcdatamodel version 1.3  --> Release to public B (based on v1.2)

我想确保当我提交版本B时,来自版本A的用户将被正确迁移。还是这是一种完全糟糕的方式?我知道,如果我不关心测试设备上的数据,我只会将xcdatamodel 1.3版本建立在1.0版本的基础上,并在该版本中添加所有新内容——我只是不想丢失我的测试设备上已经有v1.1和v1.2版本的应用程序的数据。

谢谢!

假设用于现有用户数据的格式可以通过自动轻量级迁移转换为当前格式,那么创建内部未发布版本也没关系。

您需要在发布的应用程序中包含的内容:任何用户可能正在使用的每个版本。在你的情况下,人们似乎只有1.0格式的商店,所以没有必要包括1.1或1.2。如果不是这样的话——也就是说,如果某个地方有一个用户可能有1.1或1.2版本的数据——那么你需要包括它们。

因此,只要1.0-->1.3的更改与自动轻量级迁移一起工作,并且没有用户拥有1.1或1.2格式的数据,您就可以删除中间版本。

轻量级迁移只适用于某些类型的模型更改。最好的办法是对此进行彻底的测试。您可以安全地执行以下操作:

  • 向实体添加新的可选属性或关系
  • 向具有默认值的实体添加新的必需属性
  • 将现有可选属性更改为必需但具有默认值
  • 重命名属性、关系或实体,并在核心数据实用程序窗格选项卡的"重命名ID"字段中指定旧名称

《核心数据模型版本控制和数据迁移编程指南》列出了更多操作,但您应该再次测试所有这些操作。

最新更新