CoreData的数据迁移

http://blog.csdn.net/ioswyl88219/article/details/22822239?utm_source=tuicool&utm_medium=referral

很多人说CoreData坑多,现在才感觉到,今天上午写代码的时候,发现了一个大问题.

过程如下,之前我自己给coredata的实体添加了几个字段,后来网上的一个用户说我们的app进去后闪退,但是我自己从新冲appstore下载了一个发现并没有哪些问题.于是这个事就过去了.第二天我run我自己的新程序的时候,发现coredata一保存在save方法的时候,就直接闪退.连错误都不报.导致我很崩溃... 网上一查,原来是要数据迁移.下面是我的一些记录,希望能帮助到别人.


其实很多简单的情况,不用这么麻烦,Coredata提供了轻量级的自动数据迁移,比如以下三个情况会自动进行:

1.简单的增加一个字段

2.把一个必填字段改为可选字段

3.把可选字段改为必填字段(但一定要定义默认值)


1.升级数据库模型:选中你的mydata.xcdatamodeld文件,选择菜单editor->Add Model Version 比如取名:mydata2.xcdatamodel

2.设置当前版本:选择上级mydata.xcdatamodeld ,在inspector中的Versioned Core Data Model选择Current模版为mydata2(inspector界面,即为XCode工作区右侧工具栏)

3.修改新数据模型mydata2,在新的文件上添加,修改或删除字段及表

4.在程序启动时添加如下代码:


[objc]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <span style="font-size:18px;">NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],  
  2. NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES],  
  3. NSInferMappingModelAutomaticallyOption, nil nil];  
  4.   
  5. if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType  
  6. configuration:nil  
  7. URL:storeUrl  
  8. options:optionsDictionary  
  9. error:&error]) {  
  10. NSLog(@”failed to add persistent store with type to persistent store coordinator”);  
  11. }</span>  


5.重启一下XCode


参考文章:升级app时coreData的处理及注意事项   使用CoreData的轻量级自动数据迁移 Working with Core Data: Schema Versioning and Lightweight Migrations 小结CoreData的Migration coredata 数据迁移 CoreData数据迁移方法



------------------8.11--------------------

注意3个问题

1.实体要起名字

2.要先建一个新的model再在新的model上操作

3.建立了新的以后,一定要查看旧的有没有修改,一定不要修改!!不要乱改属性,可以增加一个新的代替


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值