我正在尝试将五个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;
代码有问题吗?替代代码?感谢所有答案!
答案 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。