2009-10-29 2 views
2

사용자 인터페이스의 모든 컨트롤에 바인드 된 NSObjectController가 있습니다. 지금까지 잘 작동합니다. 유일한 문제는 NSComboBox를 동일한 ObjectController에 바인딩하는 것입니다. 지금까지 내가 알게 된 ComboBox의 값은 항상 문자열이기 때문에 OBjectController 클래스의 필드는 NSString.Sounds이지만 쉽게 작동하지 않습니다.Cocoa-Bindings : NSComboBox 선택을 NSObjectController의 필드에 바인드합니다. 내 애플리케이션의

나는 항상 "이 ... 클래스가 아닌 키 값 코딩을 준수 키 위해 ..."자체가 다른 컨트롤러하는 NSArrayController에서 온 콤보 상자에서

항목을 얻을. 그러나 그 부분은 잘 작동합니다. Array의 모든 항목은 ComboBox의 항목입니다. 내가 가진 문제는 ObjectController에 선택을 가져 오는 중입니다.

+0

전체 예외 메시지를 게시하십시오. –

답변

2

NSObjectController가 사용하고있는 데이터 모델 객체가 그 값에 대해 적절한 키 메소드를 가지고 있지 않다는 것을 말하는 것입니다.

코코아 바인딩 참조 문서에서 value 바인딩은 해당 모델의 키 - 값 - 코딩 호환 키에 해당하는 NSObjectController의 키로 설정되어야합니다.

예 :

NSObjectController 모드 Class이며, 클래스 이름 foo입니다. 그런 다음 foo의 comboSelection 키를 NSComboBox의 value에 바인딩합니다. 어떤 예외가 말하고있는 것은 푸 클래스는 방법은 comboSelection라고하지 않는다는 것입니다 :

NSObjectController의 클래스로 NSMutableDictionary를 사용하는 경우
- (NSString*)comboSelection; 
- (void)setComboSelection:(NSString*)inSelection; 

사전 임의의 키를 보유 할 수 있기 때문에, 그것은 훨씬 더 쉽다.

CoreData (mode = Entity)를 사용하는 경우 CoreData 엔티티에 적절한 속성이 있어야합니다.

관련 문제