2016-05-31 8 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을 사용하는 방법과 혼동을 느낍니다. 여기서 리턴 값은 멤버 중 하나의 문자열 값이되며, 이것은 더 많은 데이터의 열쇠입니다. 하지만이 자식을 선택할 때, 나는 부모 문자열 만 가지고 작업 할 수 있습니다. 사전 탐색을 실제로 수행하기 위해 사용자가 지금까지 선택한 경로의 전체 경로가 필요합니다.

NSBrowserpath() 메서드를 살펴 보았지만 이러한 위임 메서드에서 무한 루프가 발생했습니다. 나는 파인더 (Finder)와 같은 앱을보고 그들이 원하는대로 길을 얻는 방법에 대해 궁금합니다.

답변

0

브라우저 위임 메서드가 포함 된 사전을 자체적으로 사용하면 어디에도 연결할 수 없다는 결론에 도달했습니다. 나를 위해 일한 것은 무엇이고 다른 사람들에게 내가 권하는 것은 브라우저에 전달할 수있는 사전을 나타내는 객체를 만드는 것이다. 예를 들어

: 사전 트래버스

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

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

브라우저가 데이터 소스로 사용하는 배열 이러한 개체를 추가한다.