2012-10-02 65 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