2016-05-31 10 views
0

OS X 10.11のNSBrowserでJSON辞書を表現しようとしています。私は、文字列値、文字列値の配列、または同じ辞書のメンバーを含む辞書を持っています。NSBrowserDelegateメソッドを使用してデータツリーを表現する方法

func rootItemForBrowser(browser: NSBrowser) -> AnyObject?私は辞書を提供しています。

func browser(browser: NSBrowser, numberOfChildrenOfItem item: AnyObject?) -> Int私は、子配列または辞書のオブジェクトの数を返します。

func browser(browser: NSBrowser, child index: Int, ofItem item: AnyObject?) -> AnyObjectの使い方と混乱しています。ここでの戻り値は、メンバーの1つの文字列値になります。これは、より多くのデータのキーです。しかし、私はこの子供を選択すると、私はちょうど親の文字列を持っています。実際に辞書をたどるために、ユーザーがこれまでに選択したことの全体的な経路が必要です。

私はNSBrowserpath()メソッドを見てみましたが、これらのデリゲートメソッドでは無限ループが発生します。私はFinderのようなアプリを見て、彼らが私が望むように彼らがどのように道を達成するかについて好奇心を持っています。

答えて

0

ブラウザデリゲートメソッドで独自の辞書を使用すると、どこにでもいらないという結論に至りました。何が私のために働いたのか、私が他の人にお勧めするのは、ブラウザに渡すことができる辞書を表すオブジェクトを作成することです。例えば

:辞書トラバース

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

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

と、ブラウザは、そのデータ・ソースとして使用するアレイにこれらのオブジェクトを追加します。

関連する問題