인터페이스 글루 코드에 대해 걱정할 필요가 없도록 수동으로 동기화 된 인터페이스 모델에서 바인딩 모델로 내 Cocoa 프로젝트를 변환하는 데 문제가 있습니다.코코아 바인딩 문제; 바운드 테이블 열에 데이터가 표시되지 않고 콘솔에 오류가 표시되지 않습니다.
코코아 데브 센트럴 Cocoa Bindings tutorial을 따라 모든베이스를 덮었지만 제대로 작동하지 않습니다. 마스터 - 세부 인터페이스가 있지만 인터페이스의 마스터 부분이 제대로 작동하는 데 문제가 있습니다. 튜토리얼에 표시된 것과 유사한 바인딩 모델을 설정했지만 마스터 열에는 데이터가 표시되지 않습니다. 나는 모든 컨트롤러와 객체가 -(id)key
과 -(void)setKey:(id)key
메쏘드를 가지고 있는지 확인했다. 바인딩을 준수하고, 내 컨트롤러에 ControllerAlias 객체를 생성하고, 컨트롤러에 연결하고, NSArrayController 중 하나에 바인딩하는 NSArrayController를 생성했다. ControllerAlias가 연결되는 클래스의 NSMutableArrays가 배열에 포함 된 개체 유형을 설정했는지 확인한 다음 테이블 열을 NSArrayController에 바인딩했습니다.
콘솔에서 아무런 오류가 없으며 NSBindingDebugLogLevel
을 1로 설정해도 오류가 발생하지 않습니다. 그러면 문제가 무엇인지 파악하는 데 도움이됩니다.
내가 제대로 작동하는지 확인하는 유일한 방법은 실제로 NSArrayController에 연결하는 NSMutableArray가 실제로 그 안에 뭔가 있는지 확인하는 것입니다.
제안 사항? 내가 확인해야 할 코코아 바인딩이있는 다른 전형적인 함정은 무엇입니까?
또 다른 방법은 (내 의견으로는) '-addThingsObject :'접근자를 추가하는 것입니다 (속성의 이름이 "things"라고 가정). 그러면'-awakeFromNib'의 코드는'[self addThingsObject : newThing];'입니다. –
기본 배열 대신 NSArrayController에 직접 객체를 추가하면 awakeFromNib에 코드를 유지할 수 있습니다. 그러면 바인딩 항목에 새 항목에 대한 알림이 표시되고 UI가 적절하게 업데이트됩니다. – Andy