小编Ira*_*oke的帖子

核心数据迁移失败,"无法找到源存储的模型",但存在源的managedObjectModel

我有一个使用核心数据的cocoa应用程序,它现在是其托管对象模型的第4版.

我的托管对象模型包含抽象实体,但到目前为止,我已设法通过创建适当的映射模型并使用addPersistentStoreWithType创建我的持久存储来实现迁移:配置:options:error并将NSMigratePersistentStoresAutomaticallyOption设置为YES.

NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
NSURL *url = [NSURL fileURLWithPath: [applicationSupportFolder stringByAppendingPathComponent: @"MyApp.xml"]];
NSError *error=nil;
[theCoordinator addPersistentStoreWithType:NSXMLStoreType configuration:nil URL:url options:optionsDictionary error:&error]
Run Code Online (Sandbox Code Playgroud)

当我从模型版本3迁移到4时,这种方法很有效,这是一个涉及向多个实体添加属性的迁移.现在,当我尝试添加新的模型版本(版本5)时,对addPersistentStoreWithType的调用返回nil,错误仍为空.从4迁移到5涉及添加单个属性.

我正在努力调试问题,并检查了以下所有内容;

  1. 源数据库实际上是版本4,而persistentStoreCoordinator的托管对象模型是版本5.

  2. 4-> 5映射模型以及版本4和5的托管对象模型存在于我构建的应用程序的resources文件夹中.

  3. 我尝试了各种模型升级路径.奇怪的是,我发现从早期版本3 - > 5升级工作..但从4 - > 5升级失败.

  4. 我已经尝试添加自定义实体迁移策略,用于迁移属性正在发生变化的实体...在这种情况下,我覆盖了方法beginEntityMapping:manager:error :. 有趣的是,当迁移工作时(即当我从3迁移到4或从3迁移到5)时,会调用此方法,但在失败的情况下(4到5)不会调用它.

关于在哪里继续,我几乎不知所措.任何有助于调试此问题的想法都将非常感激.

cocoa core-data core-data-migration mapping-model

12
推荐指数
1
解决办法
6507
查看次数