【问题标题】:What am I overlooking as I attempt to account for nil?当我试图解释 nil 时,我忽略了什么?
【发布时间】:2016-07-07 09:33:22
【问题描述】:

我已经多次重读 Swift 文档,但恐怕我在这里忽略了一些简单的东西。

如果字段caloriesConsumed.text 中有值,下面的函数处理得很好,并正确调用updateCaloriBalance 方法。但是,如果caloriesConsumed.text 为nil,当然会崩溃。

我收到的错误消息是:致命错误:在展开可选值时意外发现 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()
}

【问题讨论】:

  • 也许检查Double(calConsumed) 是否导致非零而不是强制它?
  • 您是否尝试删除顶部的var calConsumed: String?
  • 你应该尝试在没有崩溃运算符!的情况下编写你的方法

标签: swift xcode7.2


【解决方案1】:

calConsumed 不应是可选字符串。实际上,“if let”创建了自己的变量,所以你现在有两个同名的变量......

如果 calConsumed 是 空字符串 或不包含数字的字符串,则

Double (calConsumed) 返回 nil。这 !你使用它会使它崩溃。

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

(未经测试甚至未编译)。

【讨论】:

  • 将 calNumber = Double (calText) 添加到方法中清除了一切。谢谢。
猜你喜欢
  • 2014-04-06
  • 2011-12-31
  • 2013-09-30
  • 2011-03-27
  • 2016-06-20
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
相关资源
最近更新 更多