zoukankan      html  css  js  c++  java
  • Core Data系列六——Custom Migration

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

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

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

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

    大致的流程图为:

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

    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: 其实例为一个具体实体映射的迁移策略。简单的说,这个类让我们不仅仅能修改实体的属性和关系,而且还能任意添加一些自定义的操作来完成每个实体的迁移

    参考文档:
    http://objccn.io/issue-4-7/

  • 相关阅读:
    使用Netty4实现基本的消息分发
    【Netty官方文档翻译】引用计数对象(reference counted objects)
    nio复习总结
    redis tutorail
    服装设计
    linux nat网络配置
    关闭linux退格键和vi发出的嘟嘟声
    CentOS/Linux 网卡设置 IP地址配置
    WCF Security基本概念(转载)
    WCF使用net.tcp寄宿到IIS中(转)
  • 原文地址:https://www.cnblogs.com/mindyme/p/4966871.html
Copyright © 2011-2022 走看看