CoreData自动轻量级迁移错误



我正在尝试在我的应用程序中使用自动轻量级迁移。我做了以下步骤:

  1. 创建新模型版本
  2. 编辑新模型版本
  3. 在创建persistentStoreCoordinator时设置nsmigratepersistentstoreautomaticyoption和nsinfermappingmodelautomaticyoption选项为YES。
  4. 设置当前版本为新版本

并得到错误:reason = "Can't find model for source store"

我试过Product->Clean,但没有效果。想法吗?

编辑:我忘了把模型的细节写进去。

我有两个.xcdatamodel文件。第一个有两个实体,Event和Venue。第二个有一个实体EventDate。我不再在代码中使用第二个.xcdata模型,但我确实在项目中留下了该文件。我试图添加一个新的实体更新到第一个模型文件。

错误"Can't find model for source store"表示无法找到最初用于创建现有持久存储的.xcdatamodel文件。

假设你从这两个模型文件开始(版本号是应用程序的版本,而不是数据模型):

oneEntityModelv1.xcdatamodel
twoEntityModelv1.xcdatamodel

…,你想迁移到这个数据模型:

threeEntityModelv2.xcdatamodel

应用程序的v2版本必须包含所有三个文件才能进行迁移。

问题是我们使用了mergedModelFromBundles来实例化我们的模型。显然,这在自动轻量级迁移中并不适用。修复方法是

  1. 删除未使用的xcdatmodel。
  2. 删除数据库文件。
  3. 版本剩余模型。

最新更新