gpt4 book ai didi

iphone - NSNumber 存储零值而不是正确的数值

转载 作者:行者123 更新时间:2023-11-29 04:40:30 27 4
gpt4 key购买 nike

我正在开发一个简单的计算器 iPhone 应用程序。只是为了练习的目的。我有一个 IBAction 方法来存储用户输入的数字。整个概念是计算器应用程序堆积待处理的操作,以便用户可以执行多个操作,并且屏幕按以下方式显示结果:1 + 2 - 4 + 10 = X。所以我有两个存储 NSNumber 数字的 NSMutableArray 和运算符(operator)的 Action 。当用户单击运算符按钮时,将为新数字创建一个新的数组元素。当用户输入数字时,最后一个数组元素会自行更新,直到按下操作按钮。

问题是每个数组元素都为零。在方法内部,当我设置它时,它会存储正确的值,但是当执行并再次调用该方法时,它只包含零而不是输入的数字。 NSNumber 对象存在,数组包含每个数字,但每个数字都是 0。

方法如下:

// Processing digit buttons 
- (IBAction)clickDigit: (UIButton *) sender {

double currentNumber = [[numbers lastObject] doubleValue];

// Get the digit
double digit = sender.tag;

// Do nothing when the currentNumber and the digit both zero
if(currentNumber == 0 && digit == 0) {
return;
}

// When currentNumber is zero, override the value
if(currentNumber == 0) {

currentNumber = digit;

[numbers removeLastObject];
[numbers addObject: [NSNumber numberWithDouble: currentNumber ]];

// Else, add the digit to currentNumber
} else {

currentNumber = currentNumber * 10 + digit;

[numbers removeLastObject];
[numbers addObject: [NSNumber numberWithDouble: currentNumber ]];
}

// Update the screen
[self updateDisplay];
}

我不知道出了什么问题。有什么建议么?提前致谢

更新:事实证明,每次按下按钮后都会自动调用 clickClear 方法。它将值设置为零。我在评论部分链接了这篇文章下面的完整源代码。唯一的问题是:为什么调用这个方法?这个方法叫什么?

更新2:在萨德的帮助下,我成功解决了这个问题。谢谢大家! :)

最佳答案

遇到此问题的唯一可能的方法是始终使用sender.tag == 0。所以你绝对应该检查一下。我的观点是,没有其他可能的情况会产生这些症状,所以它一定是这样。

关于iphone - NSNumber 存储零值而不是正确的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10465953/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com