核心数据:如果错过了先前版本的'xcdatamodel'会发生什么?

时间:2013-11-19 02:51:36

标签: ios iphone core-data

我们正在使用Core Data开发应用程序。

首先,应用程序有一个名为MyApp_001.xcdatamodel的文件,用户已安装它。

然后,我们根据MyApp_001创建两个分支:MyApp_002& MyApp_003

现在,MyApp_002有两个型号版本:MyApp_001.xcdatamodel& MyApp_002.xcdatamodel,当前版本为MyApp_002.xcdatamodel,对MyApp_001.xcdatamodel进行了一些修改。

MyApp_003有两个型号版本:MyApp_001.xcdatamodel& MyApp_003.xcdatamodel,当前版本为MyApp_003.xcdatamodel,对MyApp_001.xcdatamodel也进行了一些修改。

令我困惑的是:有些用户首先安装了MyApp_002
考虑MyApp_003不包含模型文件MyApp_002.xcdatamodel ,当他们将应用升级到MyApp_003时,可能会出现问题?

Core Data如何真正迁移数据?

谢谢!

1 个答案:

答案 0 :(得分:0)

要将数据迁移到新模型,必须存在旧模型。

将数据存储从一个模型迁移到新模型时,Core Data需要能够打开数据存储。这意味着您需要商店使用的模型 - 创建它的模型,或者,如果您以前迁移到新模型,则需要最近迁移中使用的模型。如果不存在该模型,则无法进行迁移。

在您的情况下,如果安装版本3的用户可能从版本2升级,则必须存在版本2模型。这是打开使用该模型创建的数据存储的唯一方法。

新模型基于特定的旧模型并不重要。版本2和版本3都基于版本1这一事实完全无关紧要。对迁移至关重要的是当前模型与数据存储使用的模型之间的差异。