CoreData的DataModel的版本控制和遷移(僅介紹輕量遷移),coredatadatamodel

來源:互聯網
上載者:User

CoreData的DataModel的版本控制和遷移(僅介紹輕量遷移),coredatadatamodel

使用了CoreData的APP每次發布一個新版的時候,都應該建立一個新版資料模型。否則老使用者升級後容易Crash。

在Xcode中單擊XXXXX.xcdatamodel,點擊Editor菜單,並選擇Add Model Version,接著會被要求輸入新版本的名稱。然後點擊Finish。

產生的XXXXX 2.xcdatamodel是老版本資料模型,打勾的XXXXX.xcdatamodel是新版將要發布的資料模型,所以版本號碼越高,代表檔案越老,下次再建立一個版本時,這箇舊版本將被命名為XXXXX 3.xcdatamodel,隨著版本的積累,這些數位意義逐漸顯現出來。


CoreData支援兩種不同類型的遷移。輕量遷移和標準遷移。

如果你添加或移除了實體中的屬性,或者在資料模型中新增或刪除實體,輕量遷移即可,但如果將一個實體切分成兩個不同的實體,或者將某個屬性從一個實體中移動到另一個實體,輕量遷移無效,需要用標準遷移。


大多數普通修改均可由輕量遷移來完成。

方法是將AppDelegate的persistentStoreCoordinator方法做部分修改

    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:nil error:&error]) {

修改為

    NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@YES,NSInferMappingModelAutomaticallyOption:@YES};    if (![_persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeURL options:options error:&error]) {

即可。


標準遷移詳見:


https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/CoreDataVersioning/Articles/Introduction.html


PS: 無論是標準遷移還是輕量遷移,在APP上線前都需要做大量的測試,來保證版本更新不會因為資料模型的升級原因導致Crash


轉載請註明原著:http://blog.csdn.net/marvindev




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.