转换货币字符串到NSDecimalNumber
问题描述:
我试图将一些货币字符串(例如$ 25 000)到NSDecimalNumber用下面的代码:转换货币字符串到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];
所以我迷路了。有任何想法吗?
答
NSDecimalNumber
是NSNumber
的子类。的NSNumberFormatter
的numberFromString:
方法声明为返回NSNumber*
,所以你需要添加一个角色:
NSDecimalNumber *decimalNumber = (NSDecimalNumber*)[currencyFormatter numberFromString:textField.text];
既然你已经设置为产生十进制数的行为,这将正常工作。
谢谢dasblinkenlight,不可能更明显。 –