gpt4 book ai didi

objective-c - 我可以使用 NSDictionaryController 作为字典的字典吗?

转载 作者:行者123 更新时间:2023-12-03 17:25:15 27 4
gpt4 key购买 nike

我有一个 plist 文件,其中包含我需要在组织为字典字典的应用程序中显示的信息。我刚刚开始对 Cocoa 进行编程,所以不确定最好的方法。显然,我可以手动完成这一切,并对循环进行编码并将数据添加到 UI 元素,但在我看来,绑定(bind)和提供的 Controller 应该让我更容易地做到这一点。

我特别想知道是否有一种直接的方法(例如,主要使用 Interface Builder)来链接我从读取 plist 文件中获得的 NSDictionary ,该文件本身还包含进一步的 NSDictionary > 元素(依次包含名称-值字符串对)到适当的用户界面元素(可能是大纲 View 或浏览器)。

或者,数据将适合函数浏览器类型面板(如 Excel 中),其中顶级键是函数类别,下一级是该类别中的函数,我可以用最低的值填充文本区域-级别详细信息——即来自最终字典的值数据。

最佳答案

我认为你无法使用 NSBrowser 或 NSOutlineView 来做到这一点。我这么说的原因是因为如果您使用这些 View 的绑定(bind),则需要使用 NSTreeController。 NSTreeController 提供了指定模型中哪些键指示当前对象是否有子对象(isLeaf)以及如何访问子对象(children)的功能。

因此,如果您要使用这两个 View 之一,则必须能够向模型添加其他键和属性才能执行此操作。很多时候,当我使用 NSOutlineView 和 NSBrowser 时,我发现完全跳过绑定(bind)并仅使用所有委托(delegate)和数据源方法是最简单的。它们需要更多代码,但它们并不难组合在一起,有时,如果我的数据模型很复杂或者数据不是可以通过 NSTreeController 轻松传输的格式,那么有时我更喜欢它们而不是绑定(bind)。

但是,您可以通过执行以下操作来使用 NSTableView。

  1. 在您的 NIB 中创建一个 NSDictionaryController。
  2. 在读取 plist 的 Controller 中,为 NSDictionaryController 创建一个 socket ,并使用 Interface Builder 连接该 socket 。
  3. 在读取 plist 的代码中,添加一行额外的代码,将 NSDictionaryController 的内容从 plist 设置为根字典。
  4. 在您的 NIB 中,创建一个 NSArrayController。将数组 Controller 的“内容数组”绑定(bind)到 NSDictionaryController。对于“Controller Key”绑定(bind)属性,指定“arrangedObjects”。
  5. 现在获取一个 NSTableView 并将其放入您的 NIB 中。将 NSTableColumn 的每个“Value”绑定(bind)绑定(bind)到 NSArrayController,并为“Controller Key”绑定(bind)属性指定字典中要在表列中显示其值的键。

关于objective-c - 我可以使用 NSDictionaryController 作为字典的字典吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7564010/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com