ios - 简单计算如何避免Nil/nan

标签 ios swift uitextfield

我是 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/

相关文章:

android - 他们是一种手动重新生成推送通知 token 的方法(iOS、Android、Windows)

ios - 在 Swift 4 中的两个 TableViewController 之间传递数据不起作用

ios - 我可以使用两个 Distribution Certificate 还是 Swift 和 Enterprise Dist Certs 有其他解决方案?

ios - Swift - 如果文本与数组中的任何字符串完全匹配

ios - Swift 中可能存在类中的第二个委托(delegate)吗?

通过 NSURLConnection sendAsynchronousRequest 下载 Ios 表格单元格图像会导致表格单元格删除时崩溃

ios - iOS 最佳广告平台

ios - Xcode 在栏按钮项目大小太大中使用 PDF 图像

ios - 当我更改TextField的半径时,圆角矩形轮廓仍保留在框中

ios - 带有文本输入到 UITextField 的自定义键盘