CoreData轻量级迁移在iOS上失败

时间:2011-06-19 13:59:16

标签: iphone core-data migration

我正在尝试将核心数据数据迁移到新版本。我做的唯一改变是添加一个字段(NSString * sessionId)

所以我做了什么: 1.创建核心数据文件的第2版 2.在此文件中添加sessionId。 3.将版本2设置为默认值。 4.在Offer.m和.h中添加sessionId 5.初始化persistentStoreCoordinator时添加选项:

NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:
                       [NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption,
                       [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil];

当我启动我的应用程序时,我认为它将获得更新的模型我得到:

  

未解决的错误错误   Domain = NSCocoaErrorDomain Code = 134130   “这项行动无法完成。   (可可错误134130.)“   的UserInfo = 0x7643200   {URL = /用户/ EI /库/应用程序   支持/ iPhone   模拟器/ 4.0.2 /应用程序/ 81B816AE-5CA0-46DB-83E7-6A765EBF9D05 / Documents / Offers.sqlite,metadata = {type = immutable dict,   count = 7,

其次是

  

reason =找不到源存储的模型

如果在加载persistentStoreCoordinator时没有设置选项,我会得到同样的错误 我错过了什么?

2 个答案:

答案 0 :(得分:1)

显然,如果你合并两个模型,然后尝试自动从一个模型迁移到另一个模型不起作用。我们最终将它们分开了。

答案 1 :(得分:0)

错误消息的含义正是它所说的:它缺少数据库保存的.xcdatamodel(或严格的.mom)。我尝试从旧版本中获取.xcdatamodel,看看是否有意外更改。

另一个问题是Xcode不擅长删除不再构建的文件,无论是在构建时还是在安装时(允许Xcode进行“增量安装”以使开发更快,至少在以前的版本中,永远不会删除文件)。它现在正在构建MyApp.app/MyModel.momd/MyModel.mom,而不是构建MyApp.app/MyModel.mom,但旧的MyModel.mom可能会粘在一起并混淆您用于加载模型的任何内容(通常它会抱怨)关于无法合并模型,但...)。修复是使用OTA / iPhone配置实用程序/ iTunes(按用户友好性顺序)核对构建目录并安装应用程序,顺便说一下,为什么我告诉Xcode 4在项目目录中粘贴构建产品(之所以如此)改变它可能是因为人们不聪明而不能承诺......)。