我想以编程方式(没有轻量级迁移)在两个完全相同的模型之间创建一个映射模型,除了其中一个实体(有一堆实体)具有不同的属性。我们称这个实体为“人”。假设目标模型有
1) 添加了一个名为“address”的新属性
2) 删除了一个名为“eyeColor”的属性
3)保留(即不做任何事情)名为“name”的属性
如何以编程方式在这些模型之间创建 NSMappingModel?我碰巧有一些明确的问题可以帮助我自己做到这一点:
Q1)我是否必须为除“Person”之外的所有实体创建 NSEntityMapping 对象,即使它们保持不变?
Q2) 如何处理新创建的“Person”中的“address”属性?我应该以某种方式为此创建一个 NSPropertyMapping ,将什么都变成某种东西(“地址”)吗?
Q3) 如何处理“Person”中的“name”属性?我是否必须为此创建一个 NSPropertyMapping,即使它只是保持不变?
Q4) 对于“Person”对应的 NSEntityMapping,为“eyeColor”创建任何 NSPropertyMapping 是否是删除它的正确方法?或者我应该为“eyeColor”创建一个 NSPropertyMapping ?如果是,如何创建该对象,即什么可以确定其目的是摆脱“eyeColor”?
提前谢谢您,很抱歉我自己无法回答这些问题,因为文档确实没有关于如何以编程方式创建 NSMappingModel 的好示例。再次注意,我不允许使用轻量级迁移。我必须手动执行此操作。
最佳答案
我一直使用 Xcode 的自动映射功能,但在我看来,你也可以从中学到很多东西。制作源模型(部分)的模型,添加版本,修改它以反射(reflect)目标模型并生成映射模型(菜单设计>>映射模型)。如果您随后按住 Ctrl 键单击 Xcode 为您生成的 .xcmappingmodel 并告诉 Finder 显示包的内容,您将在其中找到一个列出所有映射的 XML 文件。您可以使用 xml 作为指南来帮助您在代码中重新创建流程。祝你好运。
关于objective-c - NSMappingModel 的编程创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2512387/