我有一个名为total
的属性NSDecimalNumber
。在我的switch语句中,我试图对数字进行一些简单的加法和减法,但我不断收到“unrecognized selector sent to instance
”错误。这是代码:
switch (t) {
case 0:
{
if (_zero == YES)
{
_total = [_total decimalNumberBySubtracting:[NSDecimalNumber decimalNumberWithString:@"4.5"]];
i = (UIImageView *)[self.view viewWithTag:7];
i.hidden = YES;
} else {
NSDecimalNumber *fourpointfive = [[NSDecimalNumber alloc] initWithDecimal:[[NSNumber numberWithFloat:4.5] decimalValue]];
_total = [_total decimalNumberByAdding:fourpointfive];
i = (UIImageView *)[self.view viewWithTag:7];
i.hidden = NO;
}
break;
在同一个方法中,就在switch语句之前我初始化它:
_total = [[NSDecimalNumber alloc] initWithDecimal:[[NSNumber numberWithFloat:0] decimalValue]];
在我的@interface中:
@property (strong, nonatomic) NSDecimalNumber *total;
更新
将初始化更改为:
_total = [[NSDecimalNumber alloc] initWithString:@"0"];
但它仍在崩溃。同时删除了对decimalValue
的其他引用。
这是我收到的错误消息:
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFNumber decimalNumberByAdding:]: unrecognized selector sent to instance
答案 0 :(得分:0)
NSNumber的decimalValue返回NSDecimal,而不是NSDecimalNumber。
答案 1 :(得分:0)
好的,问题解决了。我将NSDecimalNumber
保存到NSUserDefaults
。保存到默认值的NSDecimalNumber将转换为NSNumber
,并在再次提取时返回为NSNumber
。我从默认值中取回floatValue
并将其转换回NSDecimalNumber
。