这是我正在编写的第一个真正的应用程序,我不明白为什么我在打开一个可选项时会收到这个“nil”错误。
在我发布代码之前,这里有一个简单的费用计算器的想法。
我有两个文本字段(expenseLabel 和 guestLabel)。在应用程序开始时,两者都应该是空的。这是第一个问题。如果用户不小心按下了计算按钮,我会收到以下错误:
在展开可选值时意外发现 nil
(这是我在** ... ** 中标记的第一行代码)。
只要用户在应用程序开始时输入数字或标签不为空(例如,我在情节提要中输入一个数字)就不会发生这种情况,但由于某种奇怪的原因,我在第二次得到相同的 nil 错误当我更新 resultLabel.text 时,到最后一行(再次标记在 ** ... ** 内)。Xcode 用以下额外信息标记了这一行:
线程 1:EXC_BAD_INSTRUCTION(代码=EXE_I386_INVOP,子代码=0x0)
这是代码:
class ViewController: UIViewController {
@IBOutlet weak var expenseLabel: UITextField!
@IBOutlet weak var guestLabel: UITextField!
@IBOutlet weak var resultLabel: UILabel!
@IBAction func splitButton(_ sender: Any) {
let expense = expenseLabel.text
let guests = guestLabel.text
**var result = Double(expense!)! / Double(guests!)!**
result = round(result * 100) / 100
**resultLabel.text = String(result)**
self.view.endEditing(true)
}
...
它实际上并没有太多代码,但我不明白为什么会出现这个错误。我什至尝试了以下方法,并在其他所有内容之前介绍了两个变量费用和客人:
expense = Double(expenseLabel.text!) ?? 0.0
guests = Double(guestLabel.text!) ?? 0.0
我认为这将有助于消除 nil 展开错误,但这也不起作用。
我现在感到很无助,因为这又不是很多代码,而且出于某种原因,我认为根本没有工作。