当我试图解释为零时,我忽略了什么?

时间:2016-03-21 00:44:00

标签: swift xcode7.2

我已多次重读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()
}

1 个答案:

答案 0 :(得分:1)

calConsumed不应该是可选字符串。实际上,"如果让"创建自己的变量,因此您现在有两个具有相同名称的变量......

如果calConsumed是空字符串或不包含数字的字符串,则double(calConsumed)返回nil。的!你使用它会使它崩溃。

if let calText = caloriesConsumed.text, 
       calNumber = Double (calText) {
    ...
}

(未测试甚至编译)。