天天看點

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

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

為此進行了一番驗證。

我有一個demo工程,叫做cdnba,其資料模型如下:

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

然後基于cdnba建立了兩個分支:cdnba1和cdnba2,分别對資料模型進行修改。

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

cdnba1工程建立了cdnba 5.xcdatamodel,并安裝到模拟器上寫過資料。

接着cdnba2工程建立了cdnba 6.xcadatamodel,缺失cdnba 5.xcdatamodel檔案:

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

繼而,對模拟器上的cdnba進行覆寫安裝,可以發現資料得到了遷移:

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

為什麼在缺失cdnba 5.xcdatamodel檔案的情況下,能從cdnba1更新到cdnba2呢?

官方文檔描述資料遷移的要求是:

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