我尝试迁移我的 CoreData-Model(使用 CloudKit),它复制了我存储的所有对象。在 CloudKit 中使用 CoreData 时如何正确迁移?
我在 CloudKit 中使用 CoreData。几天前,我对模型进行了一些更改,因此需要进行迁移。事情是这样的(详情见下文):
我只是在我的模型 ( Model.xcdatamodel) 中进行了更改,没有更改模型的版本并将其安装在我的 iPhone 上进行测试 -> 崩溃并显示消息“无法迁移就地存储:尝试迁移期间违反约束”。
我创建了模型的新版本 ( Model 2.xcdatamodel) 并在那里进行了更改。然后我创建了一个.xcmappingmodel来管理迁移。没有崩溃并且它起作用了,但是......
我的应用程序中的所有条目现在都重复了,这当然不是预期的。
我的原始(源)模型有两个实体 A 和 B。A 和 B 之间存在多对多映射。我做了以下更改。
我只是创建了.xcmappingmodel-file 而没有更改其中的任何内容。对于现有实体 A 和 B,它具有接管先前数据的条目,如下所示:
destination attribute: name
value expression: $source.name
Run Code Online (Sandbox Code Playgroud)
对于现有的映射 AB(实体 B 称为“标签”),它具有:
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "TagToTag", $source.tags)
与逆关系类似。
我遵循了 Apple 的文档。我的代码看起来像这样(我做了一个CoreDataManager-class):
[...]
lazy …Run Code Online (Sandbox Code Playgroud)