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

时间:2013-08-07 15:22:56

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

如果我在版本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版本的应用程序。

谢谢!

2 个答案:

答案 0 :(得分:2)

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

您需要在已发布的应用中包含哪些内容:任何用户可能使用的每个版本。在你的情况下,人们看起来只有1.0格式的商店,因此不需要包含1.1或1.2。如果不是这种情况 - 即如果有某个用户可能有1.1或1.2版本的数据 - 那么你需要包含它们。

所以,只要1.0 - > 1.3更改使用自动轻量级迁移,没有用户拥有1.1或1.2格式数据,您只需删除中间版本。

答案 1 :(得分:0)

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

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

Core Data Model Versioning and Data Migration Programming Guide列出了更多操作,但您应该再测试所有这些操作。