【问题标题】:what's the easiest way to add the value of two text fields to equal a sum to a label将两个文本字段的值相加等于标签总和的最简单方法是什么
【发布时间】:2018-04-30 11:41:02
【问题描述】:

将两个textField 的值相加等于标签总和的最简单方法是什么。
以下是我正在使用的文本字段和标签:

@IBOutlet weak var f1TextField: UITextField!
@IBOutlet weak var f2TextField: UITextField!

@IBOutlet weak var speedLabel: UILabel!

我想将f1TextFieldf2TextField 添加并在“speedLabel”中显示结果。

【问题讨论】:

  • 使用它为你工作的代码,speedLabel.text = f1TextField.text! + f2TextField.text!

标签: ios swift add


【解决方案1】:

如果上面有数字,请使用:

if let num1 = Double(f1TextField.text!), let num2 = Double(f2TextField.text!) {
    speedLabel.text = "\(num1 + num2)"
}

【讨论】:

  • 我想我知道把它放在哪里了,但现在我得到了“变量在它自己的初始值内使用”。
  • 以按钮动作为例
  • 我把它放到一个操作按钮中,我得到了这个:可选类型“双倍?”的值未拆封;你的意思是用'!'还是“?”?
【解决方案2】:

您可以像这样使用函数式 swift 的强大功能:

if let textField1String = textField1.text, let textField2String = textField2.text {
    let arr = [textField1String, textField2String]
    let result = arr.compactMap({ Int($0) }).reduce(0, +) //Cast in Int value + using reduce to sum all the values of array
    speedLabel.text = "\(result)"
}

【讨论】:

  • 感谢您的意见。只要我没有小数,它就可以工作。如果问题中有小数,是否可以添加选项?
  • 你可以使用 Double 而不是 Int*let result = arr.compactMap({ Double($0) }).reduce(0, +)
  • 太棒了。感谢您的意见。
  • 有比创建和减少字符串数组更好的方法来添加两个数字。
【解决方案3】:

最简单的就是这个,不管它是否包含文本。

speedLabel.text = "\(f1TextField.text)\(f2TextField.text)"
    print(speedLabel.text)

【讨论】:

    【解决方案4】:

    即使其中一个文本字段为空或未在其中输入数字并将无效字段替换为 0,此代码也会执行

    speedLabel.text = "\((Double(f1TextField.text ?? "0.0") ?? 0.0) + (Double(f2TextField.text ?? "0.0") ?? 0.0))"
    

    【讨论】:

      猜你喜欢
      • 2019-07-06
      • 2019-07-06
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2023-03-09
      • 2017-05-01
      • 2013-04-25
      相关资源
      最近更新 更多