1

NSTreeController가 Core Data 상위 속성을 설정하고 하위 속성을 설정하지 않습니다.NSTreeController가 Core Data 하위 속성을 설정하지 않습니다.

나는이

Item 
    title (string) 
    isLeaf (boolean,readonly) 
    parent -> Group (inverse children) 

Group (parent entity Item) 
    children -> Item (inverse parent) 

Leaf (parent entity Item) 

같은 코어 데이터 모델은 그때 NSOutlineView로 표시하고 NSTreeController를 사용하고 있습니다. 나는 [NSTreeController insertObject : atArrangedObjectIndexPath :]를 사용하여 Leaf 's를 삽입하려고 시도하지만 leaf 속성은 올바르게 설정되지만 부모 Group.children 속성은 nil로 설정되어 있습니다. 내가 콘솔 childrenKeyPath이 인터페이스 빌더에서 설정된 경우에도

Warning: <NSTreeController: 0x7fcd93c19d20>[object class: NSMutableDictionary] childrenKeyPath cannot be nil. To eliminate this log message, set the childrenKeyPath attribute in Interface Builder 

에 다음과 같은 경고를 얻을 프로젝트를 실행하고 왜 NSMutableDictionary를 사용하는 경우

나는 NSManagedObject가 SavedItem, SavedGroup 및 SavedLeaf을 하위 클래스가있을 때. 몇 가지 예제를 다운로드했지만 그들이하는 일을 내가 볼 수는 없습니다.

답변

2

다른 솔루션은 실제 핵심 데이터 정의에 isLeaf 속성을 정의하는 대신 영리 해 지려고했습니다. 난 당신이 또한 그것을 정의하는 경우에도, NSTreeController이 좋아하지 않는 어떤 이유로, 그것은 잎 그룹 또는 여부에 따라 사실 또는 거짓을 반환로 구현 하드 코드를하려고했다 기본 클래스 awakeFromInsert awakeFromInsert 메서드를 재정 의하여 설정했습니다. 또한 관심의

당신은 아무것도/반환하지 할 기본 클래스에 아이들 속성을 정의하는 경우 NSTreeController는 그것을 좋아하지 않는다는 것입니다 전무 (즉하여 그룹 서브 클래스를 오버라이드 (override) 할 수 있습니다) , 자식 엔티티는 저장되지만 표시되지 않습니다. 이것은 내가 처음 문제를 풀려고 할 때 한 일이었고 사람들이 알고 싶어 할 것이라고 생각했습니다.