【问题标题】:Add integers from 5 UITextFields to a UILabel in Cocoa Touch将 5 个 UITextField 中的整数添加到 Cocoa Touch 中的 UILabel
【发布时间】:2010-02-14 11:35:29
【问题描述】:

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

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

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;

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

【问题讨论】:

  • 不是重复的,因为 OP 给出了他正在使用的代码,另一个因信息不足而被关闭
  • 他也在上一个问题中发布了代码(作为评论)。他似乎也忽略了以前的 cmets,例如他的术语很混乱,因为 Xcode 是 IDE 的名称,而不是编程语言或框架。
  • 上一个问题因未提供足够信息而被关闭。提问者重新询问了更多信息,现在您要再次关闭它吗?如果他无法收到原始问题的答案并且您不让他发布新问题,那么他(我正在使用此性别中立)应该如何从我们这里获得解决问题的方法?

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


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多