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

文章来源:developer.apple.com html

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

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

一般程序版本改变,会涉及到不少方面,Core Data 没有能力为咱们自动处理,但提供了一些技术为咱们所用: app

  • 模型版本管理,方便区分不一样阶段的不一样版本。 大数据

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

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

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

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

    若是复杂了,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.”

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

相关文章
相关标签/搜索