- 輕量級數據遷移
- 後續遇到的問題
在作app版本的迭代過程當中,不免會遇到要修改.xcdatamodeld文件,好比新增或刪除一個實體、增長或刪除一個原有實體的屬性等。若是你沒有設置數據遷移的話,app更新後原有的數據將會被清空,這固然是不行的,因此此時須要進行數據的遷移操做。
core data能夠設置輕量級的數據遷移,系統自動會幫你分析差別,進行映射,這種方式只適用於簡單的增刪實體或是增刪屬性等操做。除此以外還有一種至關複雜的自定義數據遷移,通常來講不會用到,本文不打算進行說明。git
1.在Core Data棧中設置自動遷移功能github
在PSC的實例化方法中添加自動遷移的相關設置。數據庫
若是你使用了MagicalRecord,只須要將以前初始化CoreDataStack的方法setupCoreDataStack 修改爲使用 setupAutoMigratingCoreDataStack進行初始化。segmentfault
2.添加新的CoreData版本,並切換到新版本多線程
選中.scdatamodeld文件後,依次點擊菜單項中的Editor->Add Model Version...app
此時.xcdatatmodeld文件就能夠展開看到其包含的多個版本spa
根據下圖所示的步驟便可將當前版本切換至你想要的版本線程
此時就能夠在新版本上進行修改了3d
ps:code
經過Editor->Create NSManageObject Sublass...建立出MO類,報以下錯誤:
解決:
自Xcode 8起,Core Data中Entity的NSManagedObject Subclass默認由Xcode自動生成,而且沒法在Project Navigator中看到,使用時能夠直接#import導入。
若是仍要使用「Create NSManagedObject Subclass」生成文件的開發方式,能夠找到Entity的「Codegen」選項(位於 Data Model inspector 中),將「Codegen」默認的「Class Definition」改成「Manual/None」,再使用「Create NSManagedObject Subclass」建立出來就沒有問題了。
參考:知乎
CoreData整理(一)——基本概念與簡單使用
CoreData整理(二)——多線程方案
CoreData整理(三)——MagicalRecord的使用
Demo地址