1

次のコードを使用して、通貨文字列 (例: $25,000) を NSDecimalNumber に変換しようとしています:

NSNumberFormatter *currencyFormatter = [[NSNumberFormatter alloc] init];
[currencyFormatter setFormatterBehavior:NSNumberFormatterBehavior10_4];
[currencyFormatter setGeneratesDecimalNumbers:TRUE];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];

// textField.text is some currency string (e.g., $25,000)
NSDecimalNumber *decimalNumber = [currencyFormatter numberFromString:textField.text];

コンパイラは currencyFormatter の結果の型について不平を言っていますが、NSDecimalNumber ではなく NSNumber ですが、ここで設定しています:

[currencyFormatter setGeneratesDecimalNumber:TRUE];

だから私は迷っています。何か案は?

4

1 に答える 1

3

NSDecimalNumberのサブクラスですNSNumber。のnumberFromString:メソッドはNSNumberFormatterreturn と宣言されてNSNumber*いるため、キャストを追加する必要があります。

NSDecimalNumber *decimalNumber = (NSDecimalNumber*)[currencyFormatter numberFromString:textField.text];

10 進数を生成するように動作を設定したので、これは正しく機能します。

于 2013-10-23T20:30:09.983 に答える