Swift 转换-展开可选值

Swift 转换-展开可选值,swift,Swift,我正在尝试编写一个体重指数计算器 @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.

我正在尝试编写一个体重指数计算器

@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
我的第二个问题是关于指数函数。是pow吗?

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

在这里:

您使用的是强制展开运算符,它从可选项中展开整数,假设它不是nil-如果可选项实际上是
nil
,则会出现该错误

选项、强制展开和类似于您的错误是堆栈溢出的常见问题。我建议你仔细阅读。这在概念上很简单,但却是许多令人头痛的问题的根源——对任何swift开发人员来说,全面了解它们的工作原理是必不可少的。提示:使用可选绑定解决您的问题

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

height.text.toInt()!