コンテンツ値が 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 だと思います。
ただし、Interface Builder とプログラムの両方で NSNumberFormatter を使用してみましたが、結果は変わりません。参考までに、これはプログラムで NSPopUpButton のフォーマッタを設定しようとしたときに使用したコードです。
tempoFormatter = [[NSNumberFormatter alloc] init];
[tempoFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[tempoFormatter setFormat:@"### bpm"];
[[tempoButton cell] setFormatter:tempoFormatter];
(tempoButton は NSPopUpButton に接続された IBOutlet です)
NSNumberFormatter を使用する必要があるかどうか疑問に思っていますか? もしそうなら、私は何を間違っていますか?Data Formatting Programming Guide を読みました。とても単純に思えますが、何かが欠けているように感じます。
前もって感謝します。