我試圖通過使用NSMigrationManager進行手動遷移來執行Core Data存儲的遷移。我創建在Xcode使用默認的嚮導映射模型(第4版),然後在代碼中發現它使用核心數據存儲遷移時出現的問題
[NSMappingModel mappingModelFromBundles:nil forSourceModel:sourceModel destinationModel:targetModel];
這似乎很好地工作。唯一的問題是,在我嘗試稍微調整映射模型後(使用描述here的方法將一個實體拆分爲兩個)之後,以前的方法不再有效,它只返回nil(這意味着映射模型不再與源和目標模型兼容?!)。另外,有趣的是,Xcode顯示了我的下拉菜單,其源模型和目標模型都沒有改變,並且設置爲正確的模型。
兼容性檢查如何工作,並且映射模型是否真的發生了一些變化,可能導致映射模型與源/目標模型的原始組合不兼容。
更新:從模擬器卸載應用程序和恢復sqlite數據庫後,它再次工作,這在我看來,就好像一些模型沒有正確更新..奇怪的是,我現在想知道是否這可能發生在真正的更新或它只是一個Xcode /模擬器問題。
說明:您是否曾經遷移模型,然後嘗試再次遷移模型?你兩次使用同一個映射模型嗎? – TechZen 2011-04-28 13:59:41
@TechZen:這是相同的模型,我已經恢復了sqlite文件。映射模型在物理上是相同的,但是它已經做了一些修改(調整了屬性映射等) – 2011-04-28 15:07:04