NSMappingModel的程序化创建

时间:2010-03-25 00:24:32

标签: objective-c cocoa core-data mapping-model

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

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

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

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

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

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

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

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

Q4)对于与“人物”相对应的NSEntityMapping,是否为“eyeColor”创建任何NSPropertyMapping以正确的方式将其删除?或者我应该为“eyeColor”创建NSPropertyMapping?如果是的话,该对象将如何创建,即什么决定其目的是摆脱“eyeColor”?

提前感谢您,我为自己无法回答这些问题而道歉,因为该文档实际上没有关于如何以编程方式创建NSMappingModel的良好示例。请再次注意,我不允许使用轻量级迁移。我必须手动完成。

1 个答案:

答案 0 :(得分:1)

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