閱讀472 返回首頁    go 魔獸


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

今天遇到一個問題,問題描述見此 https://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,那麼是可以成功遷移數據的。

最後更新:2017-04-03 14:54:23

  上一篇:go error: %preun(keepalived-1.2.7-3.el6.x86_64) scriptlet failed, exit status 1 解決
  下一篇:go Scala開發環境選型: Sublime + sbt + Ensime