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

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

  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值