iOS CoreData数据迁移-轻量级迁移

来源:互联网 发布:格博cad软件下载 编辑:程序博客网 时间:2024/05/03 07:25

我们在开发或者产品升级的时候经常会遇到托管模型的结构化修改(也就是表的结构改变),那么我们就需要数据迁移到新的模型中。

  1. 轻量级迁移方式
  2. 默认的迁移方式
  3. 迁移管理器迁移方式

现在记录一下轻量级迁移。

轻量级数据迁移适合一下情况:

  • 增加一个字段
  • 必填字段改为可选字段
  • 可选字段改为必填字段(设定默认值)

前提:首先有一个CoreData操作例子。下载
重点:如果运行程序报错:the model used to open the store is incompatible with the one used to create the store. 请点击Xcode 顶部菜单Product -》Clean 。
1.轻量级迁移方式
下载上面例子:我们先来运行程序来插入数据。(创建完成的sqlite文件在 /Documents/Stores/CoreData.sqlite)。
插入完成后使用Navicat 或者其他sqlite数据库可视化程序查看里面的数据。

上面结束后我们来修改表结构。
这里写图片描述
这里写图片描述
基于CoreData创建CoreDate 2版本 点击Finish
这里写图片描述
现在出现了两个.xcdatamaodel文件。
这里写图片描述
添加字段完成后 设置当前数据版本为CoreData 2。
这里写图片描述

现在我们还需要将原来Entity1的表结构生成的Entity1.h、 Entity1.m、Entity1+CoreDataProperties.h、Entity1+CoreDataProperties.m替换成新的。
将原来的这四个文件直接删除,然后再创建新的就可以了
这里写图片描述
这里写图片描述
这里写图片描述

好了!准备就绪 。
我们来设置轻量级迁移参数:

这里写图片描述

NSDictionary *options = @{NSMigratePersistentStoresAutomaticallyOption:@(YES),                              NSInferMappingModelAutomaticallyOption:@(YES)};

好的 现在就已经完成了。下面我们来测试一下。
这里写图片描述
我们来查询一下新的表结构中是否有数据。
这里写图片描述

看样子是已经成功了。

1 0
原创粉丝点击