【问题标题】:Swift - fatal error: unexpectedly found nil while unwrapping an Optional value (lldb)Swift - 致命错误:在展开可选值 (lldb) 时意外发现 nil
【发布时间】:2015-03-04 18:38:52
【问题描述】:

我正在为 iOS 8 - Swift 语言学习 Udemy 课程。 在尝试制作待办事项列表应用程序时,我不断收到此错误:

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

代码如下:

下面是代码:

class SecondViewController: UIViewController {

    var toDoItems:[String] = []
    
    @IBOutlet var toDoItem: UITextField!
    
    @IBAction func addItem(sender: AnyObject) {
    
        toDoItems.append(toDoItem.text)
        
        println(toDoItems)
        
    }
    

有什么帮助吗?

谢谢!!

【问题讨论】:

  • 你从哪里得到这个错误,toDoItem 是什么?

标签: ios swift


【解决方案1】:

我假设错误与 toDoItem 属性有关。

也许您忘记将该属性正确连接到 UI 中的元素,因此该变量为 null。

您将其声明为:

@IBOutlet var toDoItem: UITextField!

这意味着它是一个可选值,它可能是 nil。在这种情况下,因为您正在使用 !而不是?,这意味着当你访问它时,变量被隐式解包,所以你不必像使用它一样

toDoItem!.text

问题在于,由于该变量是可选的,因此在访问它之前,您必须始终确保它包含一个值,因此正确的代码应该是:

@IBAction func addItem(sender: AnyObject) {
    if(toDoItem != nil){
        toDoItems.append(toDoItem.text)
    }

    println(toDoItems)

}

【讨论】:

    【解决方案2】:

    是因为下面这行:

    toDoItems.append(toDoItem.text)
    

    您的 IBOutlet 是可选的,因此它的值可以为零。如果您忘记将其连接到情节提要,它将为零。所以在这种情况下,它会导致崩溃,因为你试图访问 nil 的属性!!!将其更改为:

    if let textValue = toDoItem?.text
    {
       toDoItems.append(textValue)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-29
      相关资源
      最近更新 更多