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


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()"上得到了错误。我正在使用滑出式导航面板导航到其他视图控制器,例如使用 segue 的 facebook 和左侧菜单上的嵌入式导航控制器。

不知道怎么了

,请帮忙!

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

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

var tableView: UITableView!

它是一个隐式解包的可选选项。 如果它未绑定,则崩溃。

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

最新更新