1

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

谢谢!

4

2 回答 2

2

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

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

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

于 2013-08-07T17:44:29.777 回答
0

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

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

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

于 2013-08-07T15:34:21.747 回答