我已多次重读Swift文档,但我担心我会在这里忽略一些简单的事情。
如果caloriesConsumed.text字段中有值,则下面的函数处理得很好并正确调用updateCalorieBalance方法。但是,当然,如果caloriesConsumed.text为零,则崩溃。
我得到的错误消息是:致命错误:在展开Optional值时意外发现nil。
非常感谢您的协助。
@IBAction func buttonThree(sender: AnyObject) {
var calConsumed: String?
if let calConsumed = caloriesConsumed.text {
calorieCount.updateCalorieBalance(Double(calConsumed)!)
balanceLabel.text = "New Balance: \(Int((calorieCount.getCalorieBalance())))"
} else {
balanceLabel.text = "Please enter calories to add."
}
caloriesConsumed.resignFirstResponder()
}
答案 0 :(得分:1)
calConsumed不应该是可选字符串。实际上,"如果让"创建自己的变量,因此您现在有两个具有相同名称的变量......
如果calConsumed是空字符串或不包含数字的字符串,则double(calConsumed)返回nil。的!你使用它会使它崩溃。
if let calText = caloriesConsumed.text,
calNumber = Double (calText) {
...
}
(未测试甚至编译)。