CoreData版本迁移(一)
来源:互联网 发布:编程助手 编辑:程序博客网 时间:2024/05/22 03:35
轻量级迁移
符合下面情况的数据迁移为轻量级迁移:
1.添加、删除实体
2.修改原有实体的属性(增加、删除、修改)
适用场景:在版本迭代中为了满足新需求数据库的表结构可能会发生改变,这时就需要一个新的表结构来替换旧的表结构,但是如果直接在原有的可视化托管对象模板模型(Model.xcdatamodeld)上修改会导致应用崩溃(原因在最后的说明解释)。
迁移步骤:
1.选中Model.xcdatamodeld模型文件,点击上方菜单栏的Editor,在列表里选Add Model Version选项,
并在弹出的对话框中有新模型模板名字和基于某个旧版本模型模板的选项,填写/选择后点击右下角Finish,新模型模板就创建好了。
3.为了让CoreData使用新的模板还需要修改当前模板版本,操作如下图:
选中Model.xcdatamodeld,在模型文件的Inspector列表的下方找到Model Version选项,在Current列表中选择刚创建的模型文件。
4.修改加载Store的代码,在原来的options字典添加两组Key-Value(这两对Key-Value的作用见下方的说明):
(1)NSMigratePersistentStoresAutomaticallyOption:@YES
(2)NSInferMappingModelAutomaticallyOption:@YES
做到这,再运行一遍程序,轻量级数据迁移就完成了。
说明:
1.直接修改原有的表结构运行程序崩溃原因:
在你修改完原有的模型模板结构后重新运行程序加载持续化存储区(store)时,系统会默认用新模板(修改过的模板)去打开原有的存储区,而原有的存储区是通过旧模板模型创建的,从而导致系统错误导致崩溃。
2.两对Key-Value的作用:
(1)NSMigratePersistentStoresAutomaticallyOption:@YES,这组Key-Value的作用是当你修改了托管对象模型模板,CoreData会自动试着将旧版本的持久化存储区迁移到最新版的模型中。
(2)NSInferMappingModelAutomaticallyOption:@YES,这组Key-Value的作用是自动推断映射模型,当你选用新的模板后,CoreData会去自动推断原有的模型实体中的属性会对应于新模型实体中的哪一个属性(映射)。如果Value为NO,CoreData不会去自动推断,而新模板的实体对于旧模板的实体已经有改动了,但CoreData还是会默认新模板上的实体和旧模板的上的实体一一对应,结果映射不上,导致系统错误造成崩溃。
- CoreData版本迁移(一)
- CoreData版本迁移(二)
- CoreData版本迁移
- CoreData的版本迁移
- CoreData轻量级版本迁移
- 使用CoreData 和版本迁移
- iOS 10 coreData 版本迁移
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- CoreData(数据库升级 )版本迁移-iOS App升级安装
- CoreData的使用/以及coreData中的多线程问题/版本迁移(二)
- CoreData的DataModel的版本控制和迁移(仅介绍轻量迁移)
- CoreData版本升级和数据迁移
- 关于CoreData版本迁移的问题
- CoreData 从入门到精通(六)模型版本和数据迁移
- iOS 数据持久化 CoreData的版本迁移
- CoreData使用(一)
- CoreData 学习(一)
- CoreData实践(一)
- POJ 1456 Supermarket [贪心+并查集]
- JSP通过Servlet生成验证码
- 【操作系统】输入输出系统(上)-思维导图
- 【操作系统】虚拟存储器(下)-思维导图
- 专家系统介绍
- CoreData版本迁移(一)
- 【操作系统】虚拟存储器(上)-思维导图 :虚拟存储器概述、请求分页存储方式
- CPU acceleration status:HAXM must be updated(version 1.1.1<6.0.1)
- 【操作系统】对换、分页和分段方式-思维导图
- 计算机系统进制备忘
- Binary Tree Longest Consecutive Sequence
- 初识Html问答
- Android 二维码扫描和生成简单实现
- 【操作系统】存储器管理01-思维导图