如何正确解开UIViewController

时间:2017-06-10 08:06:25

标签: ios swift3

我无法真正理解如何解开这段代码,我尝试使用if,guard和强制解包,但是当id不存在时它们都会崩溃。是否可以使它在控制台中显示print()而不执行任何进一步的代码

    guard let historyViewController = self.storyboard?.instantiateViewController(withIdentifier: "historyViewNav") else{
        fatalError("No history view controller found ");
    }
    historyViewController.modalTransitionStyle = .flipHorizontal
    present(historyViewController, animated: true, completion: nil)

1 个答案:

答案 0 :(得分:2)

我不确定我是否明白你要做什么。这里:fatalError("No history view controller found ");如果无法从故事板初始化控制器,则会导致应用程序崩溃。如果您不希望该应用崩溃,只需在print()声明中使用else即可。如果你不想在那里发生任何其他事情,你可以事后return

guard let historyViewController = self.storyboard?.instantiateViewController(withIdentifier: "historyViewNav") else{
    print("No history view controller found ");
    return;
}

<击>

instantiateViewController(withIdentifier: "historyViewNav")如果失败则不返回nil,它会引发异常。见这里:link。所以你的guard声明无济于事。不幸的是,我不知道在运行时检查这个的直接方法,因为NSExceptions并不意味着可以在swift中捕获,如下所示:link

但是我建议查看RSwift库,这样就不必在代码中使用硬编码字符串作为标识符。