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()!