我是 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
}
最佳答案
您需要检查是否所有文本字段都包含 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"
}
提示:因为您似乎是新手,请查找Optional Chaining以便更好地理解解决方案。
关于ios - 简单计算如何避免Nil/nan,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53683367/