2

私は非常に明白な何かを見逃しているに違いありませんが、私は全体を見渡して、解決策を見つけることができません。

Interface Builderで、NSNumberFormatterをNSTextFieldに接続し、値をfloat値にバインドしました。すべて期待どおりに機能し、番号が検証および更新されます。空の文字列を入力しない限り、例外が発生します。

Exception detected while handling key input.
[<ResolutionSetting 0x11d029430> setNilValueForKey]: could not set nil as the value for the key scale.

テキストフィールドが空の場合、NSTextFieldにnilではなく空の文字列(@ "")を返す方法はありますか?または、NSNumberFormatterにnil値を処理させる方法はありますか?

4

2 に答える 2

1

setNilValueForKey: メソッドのデフォルトの動作は、例外を発生させることです。デフォルトの動作をオーバーライドするには、このメソッドをコードに実装する必要があります。たとえば、何も入力されていないときに 0.0 の値を割り当てます。例:

- (void)setNilValueForKey:(NSString *)key{
//here you can either assign @"" or 0.0
}

数値フォーマッタ属性インスペクターで最小値と最大値を指定することもできます。

このトピックは、Apple ドキュメントの「Key-Value コーディング プログラミング ガイド」、および「Mac OS X の Cocoa プログラミング」の第 7 章で説明されています。

于 2012-04-24T18:15:06.167 に答える
1

のを空でない文字列に設定しnilSymbolます。NSNumberFormatter

その後NSTextField、例外はスローされなくなりました""が、無効な値であるとユーザーに訴えます。なぜこれが機能するのかはわかりませんが、これが私が見つけた最も簡単な解決策です。

yourNumberFormatter.nilSymbol = "?"
于 2017-03-15T22:12:05.637 に答える