我正在尝试使用以下代码将一些货币字符串(例如$ 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];

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

最佳答案

NSDecimalNumberNSNumber的子类。声明numberFromString:NSNumberFormatter方法返回NSNumber*,因此您需要添加强制类型转换:

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

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

关于ios - 将货币字符串转换为NSDecimalNumber,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19551568/

10-10 20:58