我正在尝试将核心数据数据迁移到新版本。我做的唯一改变是添加一个字段(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时没有设置选项,我会得到同样的错误 我错过了什么?
答案 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在项目目录中粘贴构建产品(之所以如此)改变它可能是因为人们不聪明而不能承诺......)。