0

我正在以编程方式在我的应用程序中设置 Core Data,并且遇到了一个“问题”(不完全是问题,但想知道是否有人找到了解决它的好方法)。

我有一个基类FormElement(扩展NSManagedObject)。然后我将其扩展为各种表单类型,例如TextFieldFormElement,TextAreaFormElementSwitchFormElement, all extend FormElement。我还有一个FileAsset类(它 extends NSManagedObject)存储有关文件的信息。TextFieldFormElement并且TextAreaFormElement有一对多的关系,FileAssetSwitchFormElement没有。

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

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

以编程方式,我看不到一个明显的实现方式:
TextFieldFormElement >(one-to-many)> FileAsset
TextAreaFormElement >(one-to-many)> FileAsset
FileAsset >(one-to-one)> FormElement

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

非常感谢!

4

1 回答 1

0

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

于 2013-10-15T12:37:29.990 回答