0

콘텐츠 값이 NSNumbers의 NSArray에 바인딩되는 NSPopUpButton이 있습니다. NSPopUpButton은 팝업 메뉴에 숫자 배열을 올바르게 표시합니다. 내가 선택한 값을 변경할 때, 나는 메시지가 나타납니다 : 선택한 값이 바인딩되는 객체가의 NSNumber를 기대하고 있기 때문에 분명히 NSPopUpButton과 함께 사용되는 NSFormatter

HIToolbox: ignoring exception 'Unacceptable type of value for attribute: property = "tempo"; desired type = NSNumber; given type = NSCFString; value = 106.' that raised inside Carbon event dispatch 

는이 발생을하고 NSPopUpButton이있는 NSString을주고있다 . 다른 게시물을 살펴보면서, 내가 필요한 것은 NSNumberFormatter라고 생각합니다.

그러나 인터페이스 작성기를 통해 프로그래밍 방식으로 NSNumberFormatter를 사용해 보았지만 결과는 바뀌지 않았습니다.

tempoFormatter = [[NSNumberFormatter alloc] init]; 
[tempoFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4]; 
[tempoFormatter setFormat:@"### bpm"]; 

[[tempoButton cell] setFormatter:tempoFormatter]; 

(tempoButton가 함께 IBOutlet가 NSPopUpButton 접속된다)

NSNumberFormatter를 사용하는 경우 나 궁금 : 참고로, 이는 프로그램 방식 NSPopUpButton의 포맷을 설정하려고 할 때 사용한 코드는 심지어 내가 필요한 걸까? 그렇다면, 내가 뭘 잘못하고 있니? 데이터 포맷팅 프로그래밍 가이드를 읽었습니다. 그것은 매우 솔직하게 보입니다. 그러나 나는 뭔가를 놓치고있는 것처럼 느낍니다. 사전에

감사합니다.

+0

어떻게 선택한 개체를 가져 오는 중입니까? 'selectedObject'에 바인딩하고 있습니까? – kubi

답변

2

NSPopupButton의 선택된 값을 얻기 위해 어떤 바인딩을 사용하는지에 따라 다릅니다.

"Selected Value"에 바인딩하는 경우 NSString이 표시됩니다.

"선택한 개체"에 바인딩하는 경우 선택 항목으로 표시되는 개체를 가져 오며 여기서는 NSNumber가됩니다.

그렇지 않으면 NSValueTransformer를 바인딩에 추가하여 선택한 값을 예상하는 개체로 변환합니다.

+0

감사합니다 대런, 귀하의 의견은 올바른 방향으로 나를 지적했다. Selected/Content Values와 Objects의 차이점을 알지 못했습니다. 값 대신 Objects를 사용했는지 확인한 후에는 더 이상 오류 메시지가 나타나지 않고 편집 된 값이 성공적으로 저장됩니다. 그러나 NSNumber 값을 팝업 메뉴에 표시 될 때 "### bpm"형식으로 포맷하고 싶습니다. 나는 아직도이 일을하는 데 어려움을 겪고있다. NSNumber가 그대로 표시됩니다. –

+0

CJ : 그것에 대해 별도의 질문을해야합니다. –

관련 문제