1

내 모델 객체의 배열을 관리하는 컨트롤러에서 변경할 수있는 배열에 NSArrayController이 바인딩되었습니다. 배열 컨트롤러가 내 UI에 바인딩됩니다. 잘 작동한다.코코아 바인딩 및 NSArrayController로 모델 변경 관찰

컨트롤러 클래스에서 내 모델의 값이 변경되면 수동으로 관찰하려고합니다. (기본적으로 변경된 모델을 나중에 'needsToSave'로 표시합니다.하지만 다음과 같은 몇 가지 다른 작업이 있습니다. 그것은 바뀐다).

KVO를 읽었지만 관찰해야 할 것이 무엇인지 잘 모르겠습니다 ... NSArrayController? 객체의 배열? 각 모델 객체 자체? 혼동.

모든 포인터가 매우 유용 할 것입니다. 미리 감사드립니다!

답변

2

모델 항목에서 추가 및 제거 방법을 사용하면 발생하는 모든 것을 알기 위해 각 항목의 관찰을 시작하고 중지해야합니다. 이것은 또한 실행 취소를 구현하는 데 도움이됩니다. 샘플 코드가 필요한 경우 Hillegass 책에서 다루고 있음을 알았습니다 (최소한 제 2 판은 제 3 판을 아직 확인하지 않았습니다). 또한 실행 취소를 구현하기위한 샘플 코드를 찾을 수도 있습니다.

+0

그래서 내 컨트롤러에서 나는 다음과 같은 것을 가질 것이다 :'-addNewObject {MyObj * obj = ...; [obj addObserver : self ...]; [myArrayController addObject : obj];'그게 뭐죠? – jbrennan

+0

이것이 본질적으로 옳다면, addObserver : self forKeyPath : aKeyPath options : NSKeyValueObservingOptionOld context : NULL'을 사용하고자하는 각 키 경로를 관찰하기 시작할 필요가 있습니다. 여러 개의 키 경로를 관찰해야 할 수도 있으므로 관찰 방법을 시작하고 중지 할 수 있습니다. setArray : 메소드를 사용하여 모든 항목을 개별적으로 열거하고 이전 배열 항목의 관찰을 중지하고 새 항목부터 시작하는 방법을 잊었습니까? BTW, 당신이 문서 기반이라면 당신은 'needsToSave'부분에 저장하기 위해 문서가 지저분한지를 확인할 수 있습니다. – theMikeSwan