- 轻量级数据迁移
- 后续遇到的问题
在作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地址