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 类型是 NSNumber 而不是 NSDecimalNumber 但我在这里设置:

[currencyFormatter setGeneratesDecimalNumber:TRUE];

所以我迷路了。有任何想法吗?

4

1 回答 1

3

NSDecimalNumber是 的子类NSNumber。的numberFromString:方法NSNumberFormatter被声明为 return NSNumber*,所以你需要添加一个演员:

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

由于您已将行为设置为生成十进制数,因此这将正常工作。

于 2013-10-23T20:30:09.983 回答