如何使用NSBrowserDelegate方法表示数据树

时间:2016-05-31 06:27:11

标签: macos nsbrowser

我试图在OS X 10.11上的NSBrowser中表示JSON字典。我有一个字典,其中包含字符串值,字符串值数组或字典值的成员。

func rootItemForBrowser(browser: NSBrowser) -> AnyObject?,我提供了我的字典。

func browser(browser: NSBrowser, numberOfChildrenOfItem item: AnyObject?) -> Int,我返回子数组或字典中的对象计数。

我对如何使用func browser(browser: NSBrowser, child index: Int, ofItem item: AnyObject?) -> AnyObject感到困惑。这里的返回值最终是其中一个成员的字符串值,这是更多数据的关键。但是当我选择这个孩子时,我只有一个父字符串可供使用。我需要用户到目前为止所选择的整个路径来实际实现字典的遍历。

我已尝试查看path()的{​​{1}}方法,但这会在这些委托方法中导致无限循环。我看看像Finder这样的应用程序,我很好奇他们如何实现我想要的路径。

1 个答案:

答案 0 :(得分:0)

我最终得出的结论是,使用字典本身与浏览器委托方法并没有让我到任何地方。对我有用的,以及我对其他人的推荐,是创建一个表示可以传递到浏览器的字典的对象。

例如:

class DictionaryItem {
    let name: String
    var children: [DictionaryItem]? 
    var rawData: AnyObject?

    init(name: String) {
        self.name = name
    }
}

遍历字典并将这些对象添加到浏览器将用作其数据源的数组中。