首页 > 解决方案 > 我可以使用轻量级迁移来移动层次结构中的关系吗?

问题描述

我有一个包含文档实体和报价实体的核心数据模型。模型中有一个多引用到一个文档的关系。

我正在引入一种新的引用类型,因此我想创建一个父 BaseQuote 实体,它将具有 TextQuote 和 ImageQuote 'child' 实体。现有的报价将成为一个文本报价。

所以,我需要将关系的引用端向下推到 BaseQuote 中。

轻量级迁移文档说我可以管理“对层次结构的更改”和“对关系的更改”,但不清楚它是否可以同时处理这两者!

如果我检查映射,Core Data认为这是可能的,inferredMappingModel不会抛出错误:

NSMappingModel.inferredMappingModel(forSourceModel: lastVersion, destinationModel: thisVersion)

但是,当我运行迁移时,我收到一条消息崩溃:

Validation error missing attribute values on mandatory destination relationship

事实证明,这种关系没有被迁移正确地填充——尽管在结构上它似乎奏效了。

有没有人尝试过这个并让它工作?

标签: core-data

解决方案


我认为这超出了轻量级迁移的范围。您链接到的页面解释了关系更改包括添加、删除、重命名和更改为一对多或返回。您需要将关系从一个实体移动到层次结构中的另一个实体,也就是说,将关系Quote移到新的BaseQuote. 如果您正在更改层次结构并进行其中一项更改(例如,重命名关系),那可能会很好。不过,轻量级迁移不包括将关系重新定位到层次结构的不同部分。


推荐阅读