1

我想以编程方式(没有轻量级迁移)在两个完全相同的模型之间创建一个映射模型,除了一个实体(有一堆实体)具有不同的属性。我们称这个实体为“人”。假设目标模型有

1) 添加了一个名为“地址”的新属性

2)删除了一个名为“eyeColor”的属性

3)保留(即不做任何事情)一个名为“name”的属性

您将如何以编程方式在这些模型之间创建 NSMappingModel?我碰巧有一些明确的问题可以帮助我自己做到这一点:

Q1)我是否必须为“Person”以外的所有实体创建 NSEntityMapping 对象即使它们保持不变?

Q2) 我如何处理“Person”中的“address”属性,这是一个正在创建的新属性?我是否应该以某种方式为此创建一个 NSPropertyMapping ,这将什么都没有变成某种东西(“地址”)?

Q3) 如何处理“Person”中的“name”属性?我是否必须为此创建一个 NSPropertyMapping,即使它保持不变?

Q4) 对于“Person”对应的 NSEntityMapping,是否“eyeColor”创建任何 NSPropertyMapping 是删除它的正确方法?或者我应该为“eyeColor”创建一个 NSPropertyMapping?如果是,该对象将如何创建,即,什么将确定其目的是摆脱“eyeColor”?

提前谢谢你,我很抱歉自己无法回答这些问题,因为文档确实没有关于如何以编程方式创建 NSMappingModels 的好例子。再次注意,我不允许使用轻量级迁移。我必须手动执行此操作。

4

1 回答 1

1

我一直使用 Xcode 的自动映射功能,但在我看来你也可以从中学到很多东西。制作(部分)源模型的模型,添加版本,修改它以反映目标模型并生成映射模型(菜单设计>>映射模型)。如果您随后按住 Control 单击 Xcode 为您生成的 .xcmappingmodel 并告诉 Finder 向您显示包的内容,您将在其中找到一个 XML 文件,其中列出了所有映射。您可以使用 xml 作为指南来帮助您在代码中重新创建流程。祝你好运。

于 2010-03-26T18:21:19.687 回答