2

NSOutlineView은 내 애플리케이션의 소스 목록으로 사용되며 내 데이터 모델은 코어 데이터로 수행됩니다. 다음과 같이 바인딩 할 수있는 바인딩을 사용하고 싶습니다.코어 데이터에 의해 구동되는 바인딩을 가진 NSOutlineView

예를 들어, "Stores", "Cars"및 "People"이라고 부르기 위해 모델에 세 개의 주체가 있습니다. .

내 목표는 개요보기에 3 개의 "그룹"(iTunes의 재생 목록과 같은 확장 가능한 노드)이 있고, 각 그룹은 내 엔티티 중 하나를 표시하고 나열하며, 맨 아래에 세 개의 버튼이 있습니다. 창을 통해 "Add Store", "Add Car"등의 작업을 수행 할 수 있습니다.

지금까지 내 윈도우의 펜촉에 내 윈도우 컨트롤러의 NSManagedObjectContext 인스턴스에 바인딩 된 TreeController가 있지만 TreeController에서 아웃 라인보기를 올바르게 바인딩하고 채우는 방법을 알 수 없습니다.

바인딩이 가능합니까? 개요 노드의 엔티티를 사용하여 두 번째 관리 대상 개체 모델을 만든 튜토리얼을 한 번 보았습니다. 그러나 기사에 대한 일부 의견은 이것이 좋지 않다고 말했습니다. 계속 진행하는 방법에 대해 잘 모르겠습니다. 도움이 될 것입니다.

답변

2

내 개체에 대한 사용자 정의 클래스를 만들 수 있었고, 그들에게 isLeaf 속성을 추가 내가했던 Cocoa Bindings Programming topics: Providing Controller Content section

보십시오. 최고 수준 (상점, 자동차, 사람)의 경우 나는 no을 반환합니다. 리프 노드 (자동차, 사람 등)의 경우 나는 YES을 반환합니다.

최상위 노드가 리프 노드와 다 대다 관계를 유지해야하므로이 노드를 children이라고합니다.

Interface Builder에서 Entity의 이름을 Groups으로 설정했습니다. managedObjectContext에 바인딩됩니다. Key Paths에서 childrenLeaf에서 isLeaf으로 Children 속성을 설정했습니다.

+0

죄송합니다. Outline보기의 최상위 노드가'Groups'라는 엔티티로 표시된다는 것을 의미합니다. 올바른 것입니까? – jbrennan

+0

이름이'Cars','Stores','People', yes가 될'Group'이라는 엔티티를 말하고 싶습니다. 그 엔티티는 'children'이라고 불리는 다른 엔티티와 관계가 있습니다. 당신은 기존 엔티티를 사용할 수 있었지만'NSManagedObject'의 커스텀 서브 클래스를 만들어서 isLeaf 속성을 추가했습니다. 당신이 관심이 있다면 내 데모 애플 리케이션을 게시 할 수 있습니다. – catsby

+0

환상적 일 것이라고 생각한다면 그냥 모든 것을 유선으로 볼 수 있습니다. :) – jbrennan