我正在撰写一个简单的应用程序,其中包括根据文本字段中ID和OD的用户输入计算区域。该区域的标签将被隐藏,直到输入ID和OD。我在解开ID和OD文本字段的选项时遇到问题,以避免在用户按下"返回"没有任何数字。这就是我写的,我认为不会运行区域计算代码,除非两个字段都包含数字(我只限制键盘到数字),但是当我按下"返回"在没有输入任何内容的任何一个字段中,我仍然得到" nil可选错误"在区域计算代码中。
//move onto next field after return
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
if let nextField = textField.superview?.viewWithTag(textField.tag + 1) as? UITextField {
nextField.becomeFirstResponder()
} else{
textField.resignFirstResponder()
}
//calculate and display gasket area
if textField == self.gasketODInput || textField == self.gasketIDInput {
if let gasketIDString = gasketIDInput?.text, let gasketODString = gasketODInput?.text{
gasketArea = 0.7854*(Float(gasketODString)!*Float(gasketODString)!-Float(gasketIDString)!*Float(gasketIDString)!)
gasketAreaLabel.text = String(gasketArea)
self.gasketAreaLabel.isHidden = false
}
}
return false
}
答案 0 :(得分:0)
您需要安全地展开将文本转换为Float
的尝试。
if let gasketIDString = gasketIDInput?.text,
let gasketODString = gasketODInput?.text,
let gasketOD = Float(gasketODString),
let gasketID = Float(gasketIDString) {
gasketArea = 0.7854 * (gasketOD * gasketOD - gasketID * gasketID)
gasketAreaLabel.text = String(gasketArea)
self.gasketAreaLabel.isHidden = false
}