缺失version model的情況下能否完成Core Data的數據遷移?

今天遇到一個問題,問題描述見此 http://stackoverflow.com/q/20062215/889538

爲此進行了一番驗證。

我有一個Demo工程,叫做cdNBA,其數據模型如下:


然後基於cdNBA新建了兩個分支:cdNBA1和cdNBA2,分別對數據模型進行修改。


cdNBA1工程創建了cdNBA 5.xcdatamodel,並安裝到模擬器上寫過數據。

接着cdNBA2工程創建了cdNBA 6.xcadatamodel,缺失cdNBA 5.xcdatamodel文件:


繼而,對模擬器上的cdNBA進行覆蓋安裝,可以發現數據得到了遷移:



爲什麼在缺失cdNBA 5.xcdatamodel文件的情況下,能從cdNBA1升級到cdNBA2呢?

官方文檔描述數據遷移的要求是:

A managed object model that it can use to open the existing store.

而非必須是精確的對應模型文件。而模型文件本身是xml結構描述文件,除了一些基本信息外,就是對各種表、各個字段的描述。何爲“can use to open the existing store”的模型文件,目前無法得到確切的驗證(無源代碼言X),但可以得到的結論是在缺失對應version model的情況下,如果modification相對lightweight,那麼是可以成功遷移數據的。

發佈了194 篇原創文章 · 獲贊 728 · 訪問量 173萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章