【问题标题】:Core Data Relationships - setting up one relationship using multiple similar types核心数据关系 - 使用多种相似类型建立一种关系
【发布时间】:2013-10-15 11:59:58
【问题描述】:

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

我有一个基类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

非常感谢!

【问题讨论】:

    标签: objective-c core-data relationships inverse


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-13
      • 1970-01-01
      相关资源
      最近更新 更多