문제

컨텐츠 값이 NSnumbers의 Nsarray에 묶인 NspopupButton이 있습니다. NSPOPUPBUTTON은 팝업 메뉴의 숫자 배열을 올바르게 표시합니다. 그러나 선택한 값을 변경하면 메시지를받습니다.

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

분명히, 이것은 선택된 값이 묶인 객체가 nsnumber를 기대하고 Nspopupbutton이 nsstring을 제공하기 때문에 발생합니다. 다른 게시물을 살펴보면 필요한 것은 nsnumberformatter라고 생각합니다.

그러나 인터페이스 빌더를 통해 NSNumberformatter를 사용하려고 시도했지만 프로그래밍 방식으로 시도했지만 결과는 변경되지 않습니다. 참고로, 이것은 NSPOPUPBUTTON의 포맷터를 프로그래밍 방식으로 설정하려고 할 때 사용한 코드입니다.

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

[[tempoButton cell] setFormatter:tempoFormatter];

(Tempobutton은 NspopupButton에 연결된 Iboutlet입니다)

nsnumberformatter를 사용하는 것이 내가 필요한 것인지 궁금합니다. 그렇다면 내가 뭘 잘못하고 있습니까? 데이터 포맷 프로그래밍 안내서를 읽었습니다. 그것은 매우 간단한 것처럼 보이지만, 나는 무언가를 놓치고있는 것처럼 느낍니다.

미리 감사드립니다.

도움이 되었습니까?

해결책

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

"선택한 값"에 구속력이 있다면 NSString이 나타납니다.

"선택된 객체"에 바인딩하는 경우 선택으로 표시되는 객체를 얻을 수 있습니다.

그렇지 않으면, 당신은 당신의 바인딩에 nsValueTransformer를 추가하여 선택한 값을 기대하는 객체로 변환합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top