当前位置: 首页 > 知识库问答 >
问题:

致命错误:在展开可选值[重复]时意外地找到nil

濮阳征
2023-03-14

我正试图运行此代码,但不断收到以下错误:

致命错误:在展开可选值时意外发现nil

我不明白这是什么意思,也不明白我为什么要得到它。有什么提示吗?

import UIKit

class ViewController: UIViewController {

var lastNumber: String = ""
@IBOutlet var answerField: UILabel
@IBOutlet var operaterLabel: UILabel

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

@IBAction func buttonTapped(theButton: UIButton) {
    if answerField.text == "0"
    {
        answerField.text = theButton.titleLabel.text
    }
    else
    {
        answerField.text = answerField.text + theButton.titleLabel.text
    }
}

@IBAction func plusTapped(theButton: UIButton) {
    // error is talking about the next line
    if operaterLabel.text == ""
    {
        operaterLabel.text = "+"
        lastNumber = answerField.text
        answerField.text = "0"
    }
    else
    {
        enterTapped(nil)
        operaterLabel.text = "+"
    }

}

@IBAction func minusTapped(theButton: UIButton) {
    if operaterLabel.text == ""
    {
        operaterLabel.text = "-"
        lastNumber = answerField.text
        answerField.text = "0"
    }
    else
    {
        enterTapped(nil)
        operaterLabel.text = "-"
    }

}

@IBAction func clearTapped(AnyObject) {
    answerField.text = "0"
    operaterLabel.text = ""
    lastNumber = ""

}

@IBAction func enterTapped(AnyObject?) {

    var num1 = lastNumber.toInt()
    var num2 = answerField.text.toInt()
    if !num1 || !num2
    {
        showError()
        return
    }
    var answer = 0
    if operaterLabel.text == "-"
    {
        var answer = num1! - num2!
    }
    else if operaterLabel.text == "+"
    {
        var answer = num1! + num2!
    }
    else
    {
        showError()
        return
    }
    answerField.text = "\(answer)"

}

func showError()
{
    println("Ther was an error")
}
}

共有1个答案

阳德润
2023-03-14

该错误指的是当可选值设置为nil时访问可选值的参数(例如,当answerfield为nil时访问answerfield.text),可能是两个UILabels中的一个。

如果operaterlabel.text==“”正在抛出异常,则operaterlabel为nil。验证已将其成功连接到接口生成器文件中的标签。

 类似资料:
  • 致命错误:在展开可选值时意外发现nil。 我相信这很容易修复,但我对此相当陌生--我做错了什么?

  • 我在Swift中使用,但当我试图更改单元格标签的文本时,我得到了这个结果。 有人知道这件事吗?

  • 问题内容: 我在Swift 中使用了一个,但是当我尝试更改单元格标签的文本时得到了提示。 有人知道吗? 问题答案: 几乎可以肯定,您的重用标识符不正确。 从方法签名中我们可以看到,返回类型是 Implicitly Unwrapped Optional : 这由以下的感叹号决定: 因此,首先要考虑的是什么是“隐式展开的可选”? Swift编程语言告诉我们: 有时,从程序的结构中可以明显看出,在设置了

  • 我有以下代码: 其名称如下: 但是由于某种原因,我得到了以下错误 致命错误:在展开可选值时意外发现nil 在这一行: 请帮忙调试。 这个问题不同于 “致命错误:在展开可选值时意外发现为零”是什么意思? 这是一个更普遍的问题,与期权的展开有关 此问题特别适用于UIImagePickerController

  • 我正在使用来显示来自于一个文件恢复数据库的图像,并且当前得到了错误: 致命错误:在展开可选值时意外发现为零。 不太确定如何执行if检查以防止强制展开,因此如果有人能向我展示另一个语法示例,我将不胜感激。 还尝试将其与nil进行比较(正如文章中所建议的:“致命错误:在展开可选值时意外发现nil”是什么意思?)。