如何在CoreData中使用完全自定义迁移实体迁移关系



我目前正处于完成渐进式核心数据迁移的边缘,我遇到了一些问题:

1)如何期望使用函数createRelationshipsForDestinationInstance:entityMapping:manager:error:成功地迁移关系?苹果是希望开发者知道他们在查询什么,然后重新建立关系,还是有更优雅的方式?

2)我注意到问题1中提到的函数并不总是被调用。当我从版本1迁移到版本2时,它没有被调用,但是当我试图从版本1迁移到版本3时,它确实被调用了。为什么呢?我认为这个函数在每个endInstanceCreationForEntityMapping结束时被调用:manager:错误:?

3)我直接关注迁移多对多关系,因为它存储在一个单独的表中。迁移管理器如何处理这个问题?这不是另一个例子吧?

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

请随意使用它!:)

  1. 您将获得传入的目标实体。从那里您可以找到源实体。您也可以使用-sourceInstancesForEntityMappingNamed: destinationInstances:

  2. v1到v2的迁移工作吗?

  3. 它将以相同的方式对待所有关系,您需要在迁移过程中重新创建它们。

更新
  1. 我尝试使用该函数,但无法对与该实体关联的关系进行错误处理。这是上下文问题吗?

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

  • 在一定程度上起作用。它与属性迁移一起工作,但是关系没有被迁移。
  • 关系被迁移了吗?我怀疑你的映射模型正在为你做这项工作。

  • 所以我想我必须重新分配每个关系,每次我做自定义迁移?
  • 映射模型无法处理的所有关系;是的。

    最新更新