阅读

CoreData的版本控制和迁移(轻量迁移)

编者按: 使用了CoreData的APP每次发布一个新版的时候,都应该创建一个新版数据模型。否则老用户升级后容易Crash。

在Xcode中单击XXX.xcdatamodel,点击Editor菜单,并选择Add Model Version,接着会被要求输入新版本的名称。然后点击Finish。

生成的XXX 2.xcdatamodel是老版本数据模型,打勾的XXX.xcdatamodel是新版将要发布的数据模型,所以版本号越高,代表文件越老,下次再创建一个版本时,这个旧版本将被命名为XXX 3.xcdatamodel,随着版本的积累,这些数字的意义逐渐显现出来。

CoreData支持两种不同类型的迁移。轻量迁移和标准迁移。

如果你添加或移除了实体中的属性,或者在数据模型中新增或删除实体,轻量迁移即可,但如果将一个实体切分成两个不同的实体,或者将某个属性从一个实体中移动到另一个实体,轻量迁移无效,需要用标准迁移。

轻量迁移

大多数普通修改均可由轻量迁移来完成。

方法是将AppDelegatepersistentStoreCoordinator方法做部分修改


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]) {

即可。

标准迁移 详见苹果开发文档:CoreDataVersioning


鼓励一下

如果觉得我的文章对您有用,请土豪扫右侧二维码打赏2块钱,帮我买杯咖啡,您的支持将鼓励我继续创作!”


关于Kovli Studio

Kovli Studio是本人全栈开发历程中部分作品的展示平台。作品从衣食住行娱乐等各角度为用户提供实用、高品质、高颜值、高性价比的品质生活方案,欢迎使用。