我正在尝试present
一个viewcontroller,状态(Int
?)为零,如下所示:
guard let statusCode = status else {
DispatchQueue.main.async() {
let initViewController = self.storyboard!.instantiateViewController(withIdentifier: "SignInViewController")
self.present(initViewController, animated: false, completion: nil)
}
return
}
我想知道这是否是最佳实践,因为在呈现viewcontroller之后返回并没有多大意义,但在guard
语句中需要它,因为guard
语句不能通过。
答案 0 :(得分:4)
回答有关guard
声明和return
关键字
func yourFunc() {
guard let statusCode = status else {
return DispatchQueue.main.async() { [weak self] _ in
let initViewController = self?.storyboard!.instantiateViewController(withIdentifier: "SignInViewController")
self?.present(initViewController!, animated: false, completion: nil)
}
}
}
答案 1 :(得分:2)
您可以尝试 if 语句
if let statusCode = status {
//Success Block
}
else{
DispatchQueue.main.async() {
let initViewController = self.storyboard!.instantiateViewController(withIdentifier: "SearchTabBarViewController")
self.present(initViewController, animated: false, completion: nil)
}
}
在解包可选值时,我们中的许多人都熟悉可选绑定和“if let”语法约定。 “if let”允许我们仅在存在值时才安全地解包可选值,如果没有,则代码块将不会运行。简而言之,当价值存在时,它的重点是“真实”条件。 与“if let”不同,“警卫”声明使得早期退出成为可能,强调有错误的否定案例而不是积极案例。这意味着如果条件不满足,我们可以通过运行guard的else语句来更早地测试否定案例,而不是等待嵌套条件首先传递。 read more with example