2012-10-02 47 views
2

我希望你能帮助我。 我有三个型号版本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迁移。

但是我错了,这个迁移不会自动运行,先自动运行V2toV2,然后自动运行到V2toV3?

非常感谢您的期待。 Flo

回答

0

您需要创建从V1到V3的第三个映射模型。核心数据不会逐步通过增量映射模型。它的工作方式是核心数据分析数据文件(V1)中的模型和项目中的当前模型(V3),然后尝试找到从前者到后者的映射模型。因此,当您添加V4时,您需要创建从V1到V4,V2到V4和V3到V4的映射模型。

如果您从V1到V3的更改无法使单个映射模型正常工作,那么您需要手动将文件从V1编程转换为V2,然后将生成的V2数据文件送入自动移民。

打开核心数据迁移调试可以帮助您了解正在发生的事情。详情请查看this post