我无法真正理解如何解开这段代码,我尝试使用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)
答案 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库,这样就不必在代码中使用硬编码字符串作为标识符。