Coredata的版本升级
2016-08-27 10:55
40 查看
在开发的后期,可能因为完善和修复功能,需要对Coredata数据库表进行修改,这样就需要对CoreData进行版本升级。
比如你修改了DB字段以后,用户在旧版本上升级为新版本时会crash. 因为升级只升级了应用app,没有升级目录下的数据据db文件。在开发当中,只需要删除了app再重新安装一次就可以解决了。如果是上传到appstore的软件,那你可要小心处理了,没有经过整合migrate处理的app,用户升级后必然会crash.这时就需要用到Coredata的升级处理了。 版本升级步骤:
一、1.新建模型版本 (选中可视化建模文件, 点击editor, 选择addModelVersion)
二、把当前新建的模型版本设置成选中状态,选择为当前版本 (先选中总的模型版本, 然后在属性检查器中的第一个标签有个current,选中新建的即可)
三、删除旧的映射文件类,重新创建新映射文件(cmd + n , 在coreData选项卡中, 选择NSManageObject subclass), 记住创建时选择新的model.(因为类的属性都变了,所以要生成新的关联类)
四、在生成NSManageObjectContext时,把数据连接器persistentStoreCoordinator中的懒加载方法中, option选项由nil变成一个字典, key为NSMigrate, value为@{YES}, 该选项的意思是, 模型版本自动升级 (数据库升级)
NSDictionary *optionsDictionary = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES];//添加的字典 if (![persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:nil URL:storeUrl options:optionsDictionary error:&error]) { } //添加 *optionsDictionary,原来options:nil 改成options:optionsDictionary
重新编译一下。你可以进入沙盒打开表文件,你会发现,如果是以前的数据,新加的属性字段都为空。这样,你上架更新后都不会因为数据原因造成崩溃,而且也不会把以前的数据弄丢。是不是也插简单的啊?
相关文章推荐
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- CoreData版本升级和数据迁移
- django的版本从1.2升级到1.3的注意事项
- CentOS 6.5升级Python版本、修复yum和安装模块
- 登陆模块升级版本之模板方法篇
- Mac 如何升级 Ruby 版本
- 正确清除CentOS升级留下的老版本内核
- mysql 4.0数据库 升级到高版本
- 《GK101任意波发生器》升级固件发布(版本:1.0.2build627)
- CentOS 5升级Python版本(2.4>2.7)
- 升级MAC上Intellij IDEA的SVN版本
- Docker主机升级到4.9版本内核,使用Overlayfs取代Devicemapper 推荐
- Core Data 模型版本升级和数据迁移(四)迁移过程
- Windows Server 2012 RC 版本升级到 2012 RTM 8400 8508
- Android自动检测版本及自动升级
- python版本升级
- nodejs基础: 如何升级Noejs版本
- 实现自定义Silverlight版本检测和自定义升级Silverlight运行时方法