从Switch语句中访问全局变量

时间:2013-07-15 16:39:28

标签: iphone ios objective-c

我有一个名为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

2 个答案:

答案 0 :(得分:0)

iOS上的

NSNumber的decimalValue返回NSDecimal,而不是NSDecimalNumber。

答案 1 :(得分:0)

好的,问题解决了。我将NSDecimalNumber保存到NSUserDefaults。保存到默认值的NSDecimalNumber将转换为NSNumber,并在再次提取时返回为NSNumber。我从默认值中取回floatValue并将其转换回NSDecimalNumber