【问题标题】:Bindings - master detail array controllers绑定 - 主从数组控制器
【发布时间】:2026-02-18 05:15:01
【问题描述】:

我真的希望有人能在这方面提供帮助,因为我正在学习可可并且遇到了障碍。

我正在尝试模拟一个简单的扑克锦标赛。目前,我的实体只是一个锦标赛(带有数字)和一个玩家(带有名称)。锦标赛有一组玩家。

我可以绑定两个独立的表格视图来显示比赛和球员就好了。但我希望玩家表视图仅显示属于第一个表视图中所选锦标赛的玩家。

每个都有自己的阵列控制器。我为第二个(玩家)表尝试了各种不同的绑定,但无济于事。有没有人做到这一点?如果是这样,也许你可以为我拼写出来,因为我网上的例子很少。

  • 更新 我现在几乎可以到达我需要的地方,主要是通过错误和数小时的谷歌搜索。我已将玩家 AC 的内容绑定到锦标赛 AC,控制器键为“选定对象”和模型键路径“玩家”,这是我的锦标赛实体中的数组名称。

我已将播放器表视图中的列绑定到第二个播放器 AC,控制器键排列对象。但是在模型密钥路径中放什么?我知道它是有效的,因为如果我将@count 粘贴在那里,我会为所选锦标赛获得正确数量的玩家。但是 'name' 和 'player.name' 不好。有没有我可以尝试的“item.name”或“players.item.name”?

太接近了,感谢到目前为止的帮助:

【问题讨论】:

    标签: cocoa binding tableview nsarraycontroller


    【解决方案1】:

    我认为this tutorial 会帮助你。他们还创建了一个主/详细视图。

    简而言之:将玩家阵列控制器的contentArray 绑定到锦标赛的阵列控制器,将ControllerKey 设置为selection,其余属性根据您的模型设置。

    【讨论】:

    • 好的,该教程看起来非常有用 - 感谢您的链接,我现在正在处理它。我当前的项目使用核心数据、实体模型和托管对象上下文。这对于常规绑定工作得很好,并且具有我可以在启动对象时以编程方式创建对象的好处(并将它们插入到相同的上下文中)。这种行为是必不可少的。本教程使用字典对象而不是常规属性,当然也没有 MOC。这将需要对我现有的命令行应用程序进行彻底的重写。我应该重新开始吗?我愿意重新开始,但是
    • 看看这个网站还有一个Core Data教程(带绑定)cocoadevcentral.com/articles/000085.php最后,你必须决定什么更适合你的需求。
    • 谢谢。我只是想检查一下我没有完全走错路,听起来这两种方法都是有效的。我掌握了核心数据和绑定的窍门,但只是没有核心数据和主从表视图的这种组合。我会在 cocoadev 上四处看看。
    【解决方案2】:

    我在这里找到了答案:

    Implementing parent->child drill down in Cocoa with Core Data bindings that span multiple entities.

    • 子控制器需要通过自己的绑定了解 managedObjectContext。
    • 子控制器不得处于实体模式,而是作为 NSMutableDictionary 类运行。
    • 最后,子控制器不准备其数据。它通过内容集绑定从父级检索它。使用控制器键选择,以及连接到子级的模型键路径。

    我很惊讶这不是更常用的做法,希望下一个阅读本文的人不要花这么长时间寻找答案!

    【讨论】:

    • 如果数组中的对象是托管对象,那么数组控制器应该做相应的设置。如果它们不是 NSMutableDictionaries,则绝对不应将其设置为 NSMutableDictionary。不要对 Cocoa 撒谎——只会导致问题。菲利克斯的答案是正确的。
    最近更新 更多