【发布时间】:2015-05-29 04:55:22
【问题描述】:
我有一个array,里面有NSDecimalNumbers。我将检查该数字是否为负数。如果是,我想删除负号 (-)。这是我的代码:
NSString *amount = [myArray objectAtInde:2]; // Is a NSDecimalNumber with value of: -397.67
if ([amount doubleValue] < 0) {
amount = [amount stringByReplacingOccurrencesOfString:@"-" withString:@"- $"];
}
当我这样做时,我收到以下错误:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSDecimalNumber stringByReplacingOccurrencesOfString:withString:]: unrecognized selector sent to instance 0x7fcaf94eff80'
【问题讨论】:
-
如果你的数组有 NSDecimalNumbers,你为什么要把它分配给一个 NSString?
-
@rmaddy 我正在尝试删除“-”符号。我真正想要的是将
amount分配给label,然后如果值为负,我希望label显示如下:- $397.67而不是`$ -397.67。明白我在说什么? -
然后使用
NSNumberFormatter设置货币样式。然后货币值将根据用户的语言环境正确格式化。不要自己格式化。这对大多数用户来说都是错误的。 -
@rmaddy 是对的。您不应该尝试像这样格式化数字。使用
NSNumberFormatter。至于你的崩溃,日志说明了一切。您正在从NSString调用NSDecimalNumber的方法。显然它会崩溃。 PS。 rmaddy,我来晚了,但恭喜你突破了 100k 代表。我记得你大约 20k 的时候。好人。
标签: ios objective-c nsdecimalnumber