首页 > 解决方案 > 如何在简单的计算中避免 Nil / nan

问题描述

我是 swift 的初学者,我的学习项目是构建一个“交叉乘法”计算器。但是,如果无法计算文本标签给出输出 NaN 或应用程序崩溃,我该如何避免这种情况。

我认为应该在结果之后,输出的值应该被检查为有效 - 或者我错了什么?这不起作用:

    if convert = false {
        output.text = "X"
    }

请参阅下面的完整代码。

@IBOutlet weak var textField1: UITextField!
@IBOutlet weak var textField2: UITextField!
@IBOutlet weak var textField3: UITextField!
@IBOutlet weak var output: UILabel!

@IBAction func calculationMethod(_ sender: Any) {
    let textField1Double: Double? = Double(textField1.text!)
    let textField2Double: Double? = Double(textField2.text!)
    let textField3Double: Double? = Double(textField3.text!)

    let convert = textField3Double! * textField2Double! / textField1Double!

    if convert = false {
        output.text = "X"
    }

    let convertText = String(convert)

    output.text = convertText

}

标签: iosswiftuitextfield

解决方案


您需要检查所有文本字段是否包含Double值。如果是这样,您需要确保第一个文本字段不为 0。

if let textField1Double = Double(textField1.text!),
   let textField2Double = Double(textField2.text!), 
   let textField3Double = Double(textField3.text!), 
   textField1Double != 0 {
    let result = textField3Double * textField2Double / textField1Double
    output.text = String(result)
} else {
    output.text = "X"
}

提示:由于您似乎是新手,请查看可选链以更好地了解解决方案。


推荐阅读