2013-10-23 76 views
1

我试图将一些货币字符串(例如$ 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]; 

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

回答

3

NSDecimalNumberNSNumber的子类。的NSNumberFormatternumberFromString:方法声明为返回NSNumber*,所以你需要添加一个角色:

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

既然你已经设置为产生十进制数的行为,这将正常工作。

+0

谢谢dasblinkenlight,不可能更明显。 –