我正在尝试编写一个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
我的第二个问题是关于指数函数的。是战俘吗?
最佳答案
String
的 toInt()
方法返回一个可选的整数,即如果从 string 到 int 的转换成功,则返回一个有效整数,否则 nil
如果转换失败。
这里:
height.text.toInt()!
您使用的是强制解包运算符,它从可选值中解包整数,并假设它不是 nil - 如果可选值实际上是 nil
,您就会遇到该错误。
Optionals、强制展开和像你这样的错误是关于堆栈溢出的反复出现的问题。建议你仔细阅读 Optionals .它在概念上很简单,但却是许多令人头疼的问题的根源 - 全面了解它们的工作原理对于任何快速开发人员来说都是必不可少的。提示:使用可选绑定(bind)来解决您的问题。
关于您的第二个问题,关于 pow
:您尝试过吗?创建一个 playground 并对其进行测试 - 如果它不起作用,则提出一个新问题。
关于swift - 转换 - 展开一个可选值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26617589/