【问题标题】:How to migrate relationships with full custom migration entity in CoreData如何在 CoreData 中使用完整的自定义迁移实体迁移关系
【发布时间】:2015-10-16 20:14:56
【问题描述】:

我目前即将完成渐进式核心数据迁移,但遇到了一些问题:

1) 如何使用函数 createRelationshipsForDestinationInstance:entityMapping:manager:error: 成功迁移关系? Apple 是否希望开发人员以某种方式知道他们在查询什么并重新建立关系,还是有更优雅的方式?

2) 我注意到问题 1 中提到的函数并不总是被调用。当我从版本 1 迁移到版本 2 时,它不会被调用,但是当我尝试从版本 1 迁移到版本 3 时,它会被调用。这是为什么?我认为这个函数会在每个 endInstanceCreationForEntityMapping:manager:error:?

3) 我对迁移多对多关系有直接的担忧,因为它存储在单独的表中。迁移经理如何处理这个问题?确定不是另一个实例?

作为参考,这是我正在试验所有迁移内容的项目:https://github.com/sdwornik/ECD-Migration

请随意分叉和玩弄它! :)

【问题讨论】:

    标签: ios objective-c core-data core-data-migration


    【解决方案1】:
    1. 您获得了传入的目标实体。从那里您可以找到源实体。你也可以使用-sourceInstancesForEntityMappingNamed: destinationInstances:

    2. v1 到 v2 迁移是否有效?如果没有,那么最近可能发生了大规模迁移。

    3. 它将对所有关系一视同仁,您需要在迁移过程中重新创建它们。或许您认为问题所在的更多细节。

    更新

    1. 我尝试使用该功能,但无法排除与该实体关联的关系。这是上下文问题吗?

    您是否正在实现在新上下文中创建对象的方法?如果不是,为什么不呢?如果是这样,请考虑将其存储在迁移管理器的-userInfo 中,以便您以后访问它。

    1. 它在一定程度上起作用。它适用于属性迁移,但关系不会迁移。

    是否正在迁移关系?我怀疑您的映射模型正在为您完成这项工作。

    1. 所以我想我每次进行自定义迁移时都必须重新分配每个关系?

    您的映射模型无法处理的所有关系;是的。

    【讨论】:

    • 1.我尝试使用该功能,但无法排除与该实体关联的关系。这是上下文问题吗? 2.在一定程度上起作用。它适用于属性迁移,但关系不会迁移。 3. 所以我想我每次进行自定义迁移时都必须重新分配每个关系?
    • 你只需要做你的映射模型不能做的事情。只创建你需要的迁移策略,只实现你需要的方法并先调用super。您不必自己迁移所有内容,填空即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多