您的位置:首页 > 博客中心 > 互联网 >

CoreData的数据迁移

时间:2022-04-23 15:33

CoreData的数据迁移

 

很多人说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.在程序启动时添加如下代码: 
NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES],
NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES],
NSInferMappingModelAutomaticallyOption, nil];

if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType
configuration:nil
URL:storeUrl
options:optionsDictionary
error:&error]) {
NSLog(@”failed to add persistent store with type to persistent store coordinator”);
}

5.重启一下XCode

参考文章:                        

本类排行

今日推荐

热门手游