核心数据关系 - 使用多个相似类型建立一个关系

时间:2013-10-15 11:59:58

标签: objective-c core-data relationships inverse

我正在以编程方式在我的应用中设置核心数据,并遇到了问题" (这不是一个问题,但是想知道是否有人找到了一个很好的方法)。

我有一个基类FormElement(扩展NSManagedObject)。然后,我将其扩展为各种表单类型,例如TextFieldFormElementTextAreaFormElementSwitchFormElement都延伸FormElement。我还有一个FileAsset类(扩展NSManagedObject),用于存储有关文件的信息。 TextFieldFormElementTextAreaFormElementFileAsset有多对多的关系,但SwitchFormElement没有。

我知道我没有为FileAsset发送反向关系,或者我可以在FileAsset中设置多个属性作为每个FormElement的反向关系与FileAsset有关系(例如FileAsset.textFieldElementFileAsset.textAreaElement等)。

我的问题是:有没有人找到一个很好的可行解决方案,允许与某种类型的任何托管对象建立反向关系?我真正想做的只是在FileAsset中有一个属性(例如FileAsset.element),它将采用FormElement类型的任何对象(因此,任何扩展FormElement的对象)?

以编程方式我无法看到显而易见的事实: TextFieldFormElement>(一对多)> FileAsset
TextAreaFormElement>(一对多)> FileAsset
FileAsset>(一对一)> FormElement

之前有没有人遇到这样的问题并找到了一个很好的解决方案?我想我的另一个选择是确保FormElement只包含表单元素的所有可能属性,并且可以扩展FormElement

非常感谢!

1 个答案:

答案 0 :(得分:0)

我会将assets定义为从基类FormElementFileAsset的关系,并将其设为可选。然后element是从FileAssetFormElement的反比关系, 并且可以设置为基类或任何派生类的元素。