core-data - 我可以使用轻量级迁移来移动层次结构中的关系吗?
问题描述
我有一个包含文档实体和报价实体的核心数据模型。模型中有一个多引用到一个文档的关系。
我正在引入一种新的引用类型,因此我想创建一个父 BaseQuote 实体,它将具有 TextQuote 和 ImageQuote 'child' 实体。现有的报价将成为一个文本报价。
所以,我需要将关系的引用端向下推到 BaseQuote 中。
轻量级迁移文档说我可以管理“对层次结构的更改”和“对关系的更改”,但不清楚它是否可以同时处理这两者!
如果我检查映射,Core Data认为这是可能的,inferredMappingModel
不会抛出错误:
NSMappingModel.inferredMappingModel(forSourceModel: lastVersion, destinationModel: thisVersion)
但是,当我运行迁移时,我收到一条消息崩溃:
Validation error missing attribute values on mandatory destination relationship
事实证明,这种关系没有被迁移正确地填充——尽管在结构上它似乎奏效了。
有没有人尝试过这个并让它工作?
解决方案
我认为这超出了轻量级迁移的范围。您链接到的页面解释了关系更改包括添加、删除、重命名和更改为一对多或返回。您需要将关系从一个实体移动到层次结构中的另一个实体,也就是说,将关系Quote
移到新的BaseQuote
. 如果您正在更改层次结构并进行其中一项更改(例如,重命名关系),那可能会很好。不过,轻量级迁移不包括将关系重新定位到层次结构的不同部分。
推荐阅读
- javascript - 使用 React 检查主复选框时如何检查子复选框?
- python - 如何从 python 将数据列表发送到 postgresql,然后将该列表迭代到插入 postgresql 函数中?
- python - Matlab中名称后的两个连续括号
- html - 如何使用水晶报表打印包含表格的base64字符串
- oracle11g - 在 SQLPlus 中创建的用户无法与 SQL Developer 连接
- php - 使用 laravel 数据表服务器端功能对链接查询进行排序
- c# - EditorSceneManager 在 Play 模式下使用 SceneManager 测试
- mysql - 尝试在我的 django 项目中安装 mysqlclient 时出错?
- python - 如何根据 pandas/csv 文件在同一行中移动文件和文件夹?
- c# - 懒惰地检索用作 IEnumerable 的数组