转换 - 展开可选值

时间:2014-10-28 20:11:38

标签: swift

我正在尝试编码 BMI计算器

@IBOutlet var height: UITextField!
@IBOutlet var weight: UITextField!    
@IBOutlet var message: UILabel!    
@IBAction func keyPressed(sender: AnyObject) {

    var peso = Double(weight.text.toInt()!)
    var altura = Double(height.text.toInt()!) //ERROR LINE
    var alturaquad = Double(peso) * Double(peso)  //EXPONENTIAL
    var imc = altura / alturaquad
    message.text = "Your BMI is \(imc)"
}

我收到以下错误,但我还是不明白:

fatal error: unexpectedly found nil while unwrapping an Optional value

我的第二个问题是关于指数函数。它是战俘吗?

1 个答案:

答案 0 :(得分:2)

toInt() String方法返回一个可选整数,即如果从string到int的转换成功则返回有效整数,如果转换失败则返回nil

下面:

height.text.toInt()!

您正在使用强制解包运算符,该运算符从可选中解包整数,假设它不是nil - 如果可选实际上是nil,则表示您有错误。

选项,强制解包和像你这样的错误是关于堆栈溢出的经常性问题。我建议你仔细阅读Optionals。它在概念上很简单,但许多令人头疼的问题 - 全面了解它们的工作原理对任何快速的开发人员都至关重要。提示:使用可选绑定来解决您的问题。

至于你的第二个问题,关于pow:你试过吗?创建一个游乐场并测试它 - 然后问一个新的问题,如果它不起作用。