Core Data 模型版本升級和數據遷移(-)簡介

文章來源:developer.apple.com html

Core Data 支持隨着app開發演進而帶來的對象模型(managed object model)升級或修改的管理。模型的改變將致使不兼容(或不能打開)之前版本建立的存儲。若是你要改變你的模型,你就必需要改變現有存儲中的數據-也就是數據存儲格式(store format)-這被稱爲遷移(migration)。

要想遷移數據,你既須要原始版本,又須要當前版本。所以,須要建立 帶版本的模型(versioned model),帶版本的模型(像版本倉庫)能夠存儲下多個版本。若是沒有問題的話,Core Data 可使用當前新版本打開之前版本建立的數據存儲,並將其遷移至當前版本規範中。所以,爲了幫助 Core Data 遷移,須要咱們提供新舊版本間的映射信息(map),映射信息有兩種方式,一是簡單根據版本號,二是建立獨立的映射模型文件(separate mapping model file)。 程序員

一般程序版本改變,會涉及到不少方面,Core Data 沒有能力爲咱們自動處理,但提供了一些技術爲咱們所用: app

  • 模型版本管理,方便區分不一樣階段的不一樣版本。 大數據

    模型版本,有兩個視角,以程序員看,就是版本號(文字自己);從 Core Data角度看,就是另外一回事,具體看 「Understanding Versions.」 ui

    帶版本的對象模型文件格式和如何添加版本號,參見 「Model File Format and Versions.」 spa

  • 映射方式選擇(表和字段/實體和屬性) orm

    簡單狀況下,Core Data 能夠推測出(infer)如何映射,具體見「輕量級數據遷移」 「Lightweight Migration.」 htm

    若是複雜了,Core Data 沒法推測,咱們必須建立映射模型(mapping model),經過映射模型,表述如何轉換(從舊版本到新版本),建立方法見  「Mapping Overview.」 對象

  • 數據遷移的過程參見 「The Migration Process.」,如何執行具體的遷移參見 「Initiating the Migration Process.」 開發

    能夠定製遷移過程,如決定是否有必要進行遷移(if-else)、如何找到正確的源模型和目標模型(correct source and destination models)及正確的映射模型。

    若是你要本身初始化遷移過程,那你只能自定遷移過程,好比,在主文件夾(main bundle)以外的位置搜索,或者,利用多個映射模型執行幾個階段的遷移,也可能在大數據集基礎上處理。自定遷移過程參見  「Customizing the Migration Process.」

  • 使用了 iCloud 的App,只能執行輕量級遷移,具體參  「Migration and iCloud.」

儘管能夠輕鬆完成,但還需謹慎,避免衝突。

相關文章
相關標籤/搜索