代码之家  ›  专栏  ›  技术社区  ›  mbauman

使用跨多个实体的核心数据绑定在Cocoa中实现父级->子级向下钻取

  •  6
  • mbauman  · 技术社区  · 15 年前

    我正在尝试用iTunes风格的风格浏览器创建一个到我的核心数据模型的简单接口。

    我有一个包含三个实体的模型设置: Genre <-->> Artist <-->> Album .

    我只想简单地将它们分别绑定到一个不稳定的视图,但是从一个NSarrayController访问子关系似乎不符合kvc。所以,我很难将选定的流派对象传达给艺术家控制器。

    你是怎么做到的?在没有任何自定义子类的ib中是否可能?

    为后代编辑: 我做错了几件事。

    • 子控制器需要通过自己的绑定了解managedObjectContext。
    • 子控制器必须 Entity 模式,而是作为 NSMutableDictionary 班级。
    • 最后,子控制器不准备其数据。它通过 Content Set 结合。使用控制器键 selection 以及连接到子级的模型密钥路径。

    . 布赖恩的回答和 this MacResearch tutorial 有助于确定我的错误(以及我正确的部分)。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Brian Webster    15 年前

    我可能会采用的方法是为每个表视图分别设置一个NSarrayController,然后让一个数组控制器的内容基于另一个数组控制器的选择。

    例如,假设您有一个表视图A,它显示了可用类型的列表,所以它有一个数组控制器A,其内容连接到托管对象上下文。

    然后,假设您有表视图B,其中显示了表A中选择的任何类型的可用艺术家。此表将有自己的数组控制器B,并且绑定了控制器B的内容数组,因此将ib中的“控制器键”字段设置为控制器A的“选择”键,“艺术家”是模型键(这假定您的Re实体与Artist实体之间存在一个名为“Artisters”的多对多关系)。

    然后,您可以将相同的原则应用到第三个表视图+控制器,以显示选定艺术家的相册。

    这种设置的一般术语是“主细节界面”,并在苹果的文档中概述。 this link