이것은 매우 광범위한 질문입니다. 핵심 데이터 엔티티, NSMutableDictionary
또는 사용자가 직접 만든 사용자 정의 개체 인 모델 개체를 항상 모델 개체에 저장해야합니다. NSTreeController
또는 NSOutlineView
인스턴스에 데이터를 저장하면 안됩니다. 모델 개체가 아닙니다.
나머지 앱에 핵심 데이터를 사용하고 있고 개요보기로 조작 된 데이터를 유지해야하는 경우 이는 좋은 선택이지만 간단한 요구 사항 만있는 경우 과도 할 수 있습니다.
개요보기에 표시되는 내용을 제어하려면 또는 NSOutlineView
데이터 소스에 응답하고 프로토콜을 위임 한 자체 컨트롤러 개체를 사용할 수 있습니다. 실제로 항목이 그룹 항목인지 여부와 같은 일부 항목은 NSOutlineView
대리자 메서드로만 제어 할 수 있으므로 둘 다 사용할 수도 있습니다.
내 개인적인 경험에서 나는 NSTreeController
이 매우 간단한 작업을 넘어서서 다루기가 매우 어려울 수 있다는 것을 알았습니다. 이제는 더 오래 사용할 수 있습니다. 내 컨트롤러에서 데이터 소스 메서드를 사용하는 것이 훨씬 간단하다는 것을 알았습니다.
개요보기의 내용을 수정하는 경우 컨트롤러를 통해 항상 모델을 수정해야하며보기를 직접 업데이트하면 안됩니다. 컨트롤러에 -add:
과 같은 메서드를 구현하거나 -add:
메서드를 사용하는 경우 NSTreeController
을 사용합니다.
그러면보기의 컨트롤러가 모델의 변경 사항을 감지하고보기를 업데이트하도록 요청해야합니다. 뷰 컨트롤러와 모델 컨트롤러는 동일한 객체 일 수 있지만 반드시 같을 필요는 없습니다. Key-Value Observing은 컨트롤러에 모델 변경을 알릴 수있는 유용한 기술입니다. NSTreeController``에
http://developer.apple.com/mac/library/samplecode/SourceView/
http://developer.apple.com/Mac/library/samplecode/AbstractTree/
을 파견 :
다음은 유용하게 찾을 수있는 애플의 몇 가지 예제 코드입니다. 어구를 빌리 자면 "다친 상처"입니다. – Alex