我希望你能帮到我。 我有三个型号版本V1,V2和V3(当前型号)。 因此我有两个映射模型V1to2 V2to3 我还启用了NSMigratePersistentStoresAutomaticallyOption。
当我使用V2商店启动应用程序时,它会成功迁移到V3。 但是,当我使用V1商店启动我的应用程序时,应用程序崩溃,因为找不到映射模型:
NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSMigratePersistentStoresAutomaticallyOption];
if (![psc addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeURL
options:optionsDictionary
error:&error]) {
[NSexception raise:@"Open failed" format:@"Reason: %@", [error localizedDescription]];
}
我尝试将当前模型更改为V2并且工作正常,它从V1toV2成功迁移。 之后,我只是将当前模型更改回V3并再次对应用程序进行了操作,并从V2toV3成功迁移。
但是我错误的是,这次迁移首先不会自动运行V1toV2,之后会自动通过V2toV3运行?
非常感谢你的期待。 FLO
答案 0 :(得分:0)
您需要创建从V1到V3的第三个映射模型。核心数据不会逐步完成增量映射模型。它的工作方式是Core Data分析数据文件(V1)中的模型和项目中的当前模型(V3),然后尝试查找从前者到后者的映射模型。因此,当您添加V4时,您需要创建从V1到V4,V2到V4以及V3到V4的映射模型。
如果从V1到V3的更改使得单个映射模型无法正常工作,那么在将生成的V2数据文件输入自动迁移之前,您需要以编程方式手动将文件从V1转换为V2。
启用核心数据迁移调试可以帮助您了解正在发生的事情。查看this post了解详情。