Core Data 模型版本升级和数据迁移(一)简介

Core Data 支持随着app开发演进而带来的对象模型(managed object model)升级或修改的管理。模型的改变将导致不兼容(或不能打开)以前版本创建的存储。如果你要改变你的模型,你就必须要改变现有存储中的数据-也就是数据存储格式(store format)-这被称为迁移(migration)。

要想迁移数据,你既需要原始版本,又需要当前版本。因此,需要创建 带版本的模型(versioned model),带版本的模型(像版本仓库)可以存储下多个版本。如果没有问题的话,Core Data 可以使用当前新版本打开以前版本创建的数据存储,并将其迁移至当前版本规范中。因此,为了帮助 Core Data 迁移,需要我们提供新旧版本间的映射信息(map),映射信息有两种方式,一是简单根据版本号,二是创建独立的映射模型文件(separate mapping model file)。

通常程序版本改变,会涉及到很多方面,Core Data 没有能力为我们自动处理,但提供了一些技术为我们所用:

  • 模型版本管理,方便区分不同阶段的不同版本。

    模型版本,有两个视角,以程序员看,就是版本号(文字本身);从 Core Data角度看,就是另一回事,具体看 “Understanding Versions.”

    带版本的对象模型文件格式和如何添加版本号,参见 “Model File Format and Versions.”

  • 映射方式选择(表和字段/实体和属性)

    简单情况下,Core Data 可以推测出(infer)如何映射,具体见“轻量级数据迁移” “Lightweight Migration.”

    如果复杂了,Core Data 无法推测,我们必须创建映射模型(mapping model),通过映射模型,表述如何转换(从旧版本到新版本),创建方法见  “Mapping Overview.”

  • 数据迁移的过程参见 “The Migration Process.”,如何执行具体的迁移参见 “Initiating the Migration Process.”

    可以定制迁移过程,如决定是否有必要进行迁移(if-else)、如何找到正确的源模型和目标模型(correct source and destination models)及正确的映射模型。

    如果你要自己初始化迁移过程,那你只能自定迁移过程,比如,在主文件夹(main bundle)之外的位置搜索,或者,利用多个映射模型执行几个阶段的迁移,也可能在大数据集基础上处理。自定迁移过程参见  “Customizing the Migration Process.”

  • 使用了 iCloud 的App,只能执行轻量级迁移,具体参  “Migration and iCloud.”

尽管可以轻松完成,但还需谨慎,避免冲突。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值