博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Core Data系列六——Custom Migration
阅读量:4993 次
发布时间:2019-06-12

本文共 965 字,大约阅读时间需要 3 分钟。

我的里提到了,关于Core Data的数据迁移过程有两个维度可以自定制:

  1. 在迁移的过程中可以执行自定制的代码。通常是通过提供自己的migration policy类来实现。
  2. 可以自定制版本检测和迁移过程。指的是自己建立migration manager,判断是否需要迁移,以及控制迁移过程。

custom迁移过程则是从这两个维度进行了自定制。相对于定义从所有的历史版本到当前版本的mapping model, 更为合理的方式是渐进式迁移,即只定义从上一版本到当前版本的mapping model,渐进式地完成迁移过程。 这种方式的总体思路是:

  • 创建每个版本迁移到下一个版本的mapping model, 创建可能的NSEntityMigrationPolicy,
  • 创建并操作NSMigrationManager完成每一个版本的迁移

大致的流程图为:

742263-20151115170615619-127047375.jpg

迁移过程中有几个关键角色:

  1. NSMappingModel:提供了接口用于从指定的bundle中查找从source model到destination model迁移所需的.cdm文件,并根据文件创建mapping model
  2. MSMappingManager: 根据指定的source model、target model、mapping model, 对数据库文件执行迁移动作。具体的迁移过程是NSMigrationManager根据NSEntityMapping, 针对source instance创建对应的destination instance(s)
  3. NSEntityMapping: how to map an entity from a source to a destination managed object model;可以为每一个NSEntityMapping指定它所使用的NSEntityMigrationPolicy。在xcode中可以创建和编辑
  4. NSEntityMigrationPolicy: 其实例为一个具体实体映射的迁移策略。简单的说,这个类让我们不仅仅能修改实体的属性和关系,而且还能任意添加一些自定义的操作来完成每个实体的迁移

参考文档:

转载于:https://www.cnblogs.com/mindyme/p/4966871.html

你可能感兴趣的文章
Datatable get请求传参应用
查看>>
杭电1170
查看>>
3unit8
查看>>
kettle与各数据库建立链接的链接字符串
查看>>
【转】Apache Solr 访问权限控制
查看>>
PostgreSQL - 转义字符
查看>>
两步搞定一台电脑同时开启多个tomcat
查看>>
jQuery EasyUI弹出确认对话框(确认操作中.....)
查看>>
CentOS7 监控网络流量
查看>>
根据控件名称反射查找控件
查看>>
编写和执行C#代码的插件:CS-Script for Notepad++
查看>>
BZOJ3569: DZY Loves Chinese II(线性基构造)
查看>>
Android系统源码下载及使用(Android 14到19源码)
查看>>
绑定dropdownlist
查看>>
[LeetCode] Sudoku Solver
查看>>
实验四
查看>>
Python Day04
查看>>
Android新增API之AudioEffect中文API与应用实例
查看>>
颜色空间RGB与HSV(HSL)的转换
查看>>
swift 用协议实现代理传值功能
查看>>