我正在尝试编码 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
我的第二个问题是关于指数函数。它是战俘吗?
答案 0 :(得分:2)
toInt()
String
方法返回一个可选整数,即如果从string到int的转换成功则返回有效整数,如果转换失败则返回nil
。
下面:
height.text.toInt()!
您正在使用强制解包运算符,该运算符从可选中解包整数,假设它不是nil - 如果可选实际上是nil
,则表示您有错误。
选项,强制解包和像你这样的错误是关于堆栈溢出的经常性问题。我建议你仔细阅读Optionals。它在概念上很简单,但许多令人头疼的问题 - 全面了解它们的工作原理对任何快速的开发人员都至关重要。提示:使用可选绑定来解决您的问题。
至于你的第二个问题,关于pow
:你试过吗?创建一个游乐场并测试它 - 然后问一个新的问题,如果它不起作用。