Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone CoreData轻型迁移在iOS上失败_Iphone_Core Data_Migration - Fatal编程技术网

Iphone CoreData轻型迁移在iOS上失败

Iphone CoreData轻型迁移在iOS上失败,iphone,core-data,migration,Iphone,Core Data,Migration,我正在尝试将我的核心数据迁移到新版本。我所做的唯一更改是添加一个字段(NSString*sessionId) 所以我所做的: 1.创建我的核心数据文件的版本2 2.在此文件中添加sessionId。 3.将版本2设置为默认值。 4.在Offer.m和.h中添加sessionId 5.初始化persistentStoreCoordinator时添加选项: NSDictionary *options = [NSDictionary dictionaryWithObjectsAndKeys:

我正在尝试将我的核心数据迁移到新版本。我所做的唯一更改是添加一个字段(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];
当我启动我的应用程序时,我认为它会得到我得到的更新模型:

未解决的错误 域=NSCOCAERROR域代码=134130 “操作无法完成。 (错误134130)。” UserInfo=0x7643200 {URL=/Users/ei/Library/Application 支持/iPhone Simulator/4.0.2/Applications/81B816AE-5CA0-46DB-83E7-6A765EBF9D05/Documents/Offers.sqlite,元数据={type=immutable dict, 计数=7

原因=找不到源存储的模型

如果在加载persistentStoreCoordinator时未设置选项,则会出现相同的错误
我缺少的是什么?

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


另一个问题是,无论是在构建还是安装时,Xcode都不擅长删除不再构建的文件(Xcode允许进行“增量安装”,以加快开发速度,至少在以前的版本中,从不删除文件)。它现在不是在构建MyApp.app/MyModel.mom,而是在构建MyApp.app/MyModel.momd/MyModel.mom,但是旧的MyModel.mom可能会留下,并混淆您加载模型时使用的任何东西(通常它会抱怨无法合并模型…)。修复方法是使用OTA/iPhone配置实用程序/iTunes(为了方便用户),取消构建目录并安装应用程序,顺便说一句,这就是为什么我告诉Xcode 4将构建产品保留在项目目录中(他们更改它的原因可能是因为人们不够聪明,无法提交它…).

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

您确定安装在模拟器上的应用程序具有旧模型版本吗?您确定更改版本后没有更新模型吗?确实存在,但我认为问题在于我将两个单独的模型合并为一个。managedObjectModel_=[[NSManagedObjectModel modelByMergingModels:[NSArray arrayWithObjects:managedObjectModelOffers,managedObjectModelLogging,nil]]retain];我正在为日志功能使用第三方api,这就是为什么我合并了两个而不是在一个文件中定义它们。这是如何解决的?这应该仍然有效,但一个简单的解决方法是为日志api使用不同的PSC/MOC。不幸的是,该应用已经在应用商店中运行,并且将日志的PSC/MOC更改为separate导致崩溃:“用于打开存储的模型与用于创建存储的模型不兼容”