将5个UITextFields中的整数添加到Cocoa Touch中的UILabel

时间:2010-02-14 11:35:30

标签: objective-c cocoa-touch uikit uitextfield uilabel

我正在尝试将五个UITextFields中的整数相加并将它们发布到UILabel

这是我尝试的代码,但它无法正常工作。标签中显示的数字是不是我的文本字段的总和。我也试图发布到文本字段而不是标签,结果相同。我建立时没有错误或警告。

int val = [textfield1.text intValue]
val = val+[textfield2.text intValue];
val = val+[textfield3.text intValue];
val = val+[textfield4.text intValue];
val = val+[textfield5.text intValue];

NSString *labelStr = [[NSString alloc] initWithFormat:@"%i", val];

label.text = labelStr;

代码有问题吗?替代代码?感谢所有答案!

1 个答案:

答案 0 :(得分:0)

除了内存泄漏之外,代码看起来或多或少对我不对。您应该查看the memory management rules并修复泄漏。

我的猜测是,您输入的数字加起来超出了int范围内的数字。在int为32位的任何机器上(包括目前的iPhone-OS设备),在五个字段的每一个中输入1000000000(10 ** 9)将是一种解决此问题的方法

根据您应用的目的,您可以简单地限制五个输入字段;如果任何有意义的最高值小于最大int的五分之一(并且假设它们都具有相同的上限),则溢出是不可能的。

如果上限无法完全解决问题,请尝试其他类型。如果值永远不应为负数,请使用无符号类型。否则,请尝试long long或其中一个浮点类型,或使用NSDecimalNumber对象。

当然,我可能完全错了,因为你没有说出你输入的数字或结果是什么。如果它为零,请确保您在IB中连接您的插座;如果您忘记这样做,它们会包含nil,当您提出text时,会返回nil,当您要求intValue时,将返回0,0 + 0 + 0 + 0 + 0 = 0。