NSFormatterはNSPopUpButtonで使用しました
-
19-09-2019 - |
質問
私は、そのコンテンツ値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を使用している場合は、私は疑問に思って、私は必要なものでもありますか?もしそうなら、私は間違って何をやっていますか?私は、データフォーマットのプログラミングガイドを読んでいます。それは非常にストレートなようだが、私は何かが欠けていますような気がします。
事前に感謝します。
解決
それはあなたがNSPopupButtonの選択された値を取得するために使用している結合されに依存します。
あなたが「選択した値」に結合している場合は、NSStringのを取得します。
あなたは、「選択したオブジェクト」に結合している場合は、は、オブジェクトは、あなたのケースでのNSNumberされるであろう、選択によって表されますよ。
そうでなければ、あなたはあなたが期待しているオブジェクトに選択した値を変換するために結合することNSValueTransformerを追加することになります。
所属していません StackOverflow