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

Posted

技术标签:

【中文标题】致命错误:在展开可选值 (lldb) 时意外发现 nil【英文标题】:Fatal error: unexpectedly found nil while unwrapping an Optional value (lldb) 【发布时间】:2015-01-16 10:03:53 【问题描述】:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) 
    if segue.identifier == "showLocalMenuDetail" 
        if let indexPath = self.tableView.indexPathForSelectedRow() 
            self.slideMenuController()?.closeLeft()
            let destinationController = segue.destinationViewController as DetailViewController
            destinationController.localMenuImage = self.locals[indexPath.row].image
            destinationController.localMenuTitle = self.locals[indexPath.row].title

     

我在此“self.tableView.indexPathForSelectedRow()”处遇到错误。我正在使用滑出导航面板(如 facebook)导航到其他视图控制器,使用 segue 并在左侧菜单中嵌入导航控制器。

不知道有什么问题,请帮忙!

【问题讨论】:

你能确定它到底在哪里崩溃吗?从代码中它必须是 self.slideMenuController()?.closeLeft() - 这意味着可选的 slideMenuController 不存在 我正在使用这个库github.com/dekatotoro/SlideMenuControllerSwift,并将表格单元格添加到我的左侧幻灯片菜单中。当我单击其中一个时,会出现该错误。 【参考方案1】:

当您尝试访问声明为“隐式解包可选”(即使用! 声明)但该变量未绑定(绑定到nil)时,会发生此类错误。

在您的情况下,发生崩溃是因为在 UITableViewController 中,tableView 属性定义为:

var tableView: UITableView!

这是一个隐式展开的可选选项。如果未绑定,则崩溃。

您尚未在 Xcode 的 Interface Builder 中将 tableView 绑定到您的 UITableViewController。在 Xcode 中,如果您在“连接检查器”中查看您的控制器,您会在“插座”下发现“视图”未绑定。因此,表达式self.tableView 将产生运行时崩溃。

【讨论】:

以上是关于致命错误:在展开可选值 (lldb) 时意外发现 nil的主要内容,如果未能解决你的问题,请参考以下文章

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

AVCaptureSession 运行时崩溃。致命错误:在展开可选值 (lldb) 时意外发现 nil

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

如何修复:“致命错误:在展开可选值 (lldb) 时意外发现 nil”

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

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