ios - 如何在简单的计算中避免 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
}
解决方案
您需要检查所有文本字段是否包含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"
}
提示:由于您似乎是新手,请查看可选链以更好地了解解决方案。
推荐阅读
- mysql - JSON_ARRAY() 创建单个元素数组而不是多个
- django - 异步任务完成后是否可以使用 Django Channels 刷新页面?
- spring-boot - 如何在 Spring Boot 中更快地加载 PropertySources
- php - 图像不从数据库中显示(MySQL/php)
- apache-ranger - 无法使用 ranger rest api 用户查询提取所有用户
- c# - C# 中的 scipy interp2d 实现
- c++ - 无法为 Mac 配置 QT creator
- sql - 数据库上重复相同的最佳实践
- vue.js - 如何在 Vue.js 中将实例化的 Vue 组件作为道具传递?
- c++ - 从左到右的反向链表