我正在尝试使用以下代码将某些货币字符串(例如,$ 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];
所以我迷路了。有什么想法吗?
答案 0 :(得分:3)
NSDecimalNumber
是NSNumber
的子类。 numberFromString:
NSNumberFormatter
方法被声明为返回NSNumber*
,因此您需要添加一个演员:
NSDecimalNumber *decimalNumber = (NSDecimalNumber*)[currencyFormatter numberFromString:textField.text];
由于您已设置行为以生成十进制数字,因此这将正常工作。