在 guard 语句 swift 中呈现 ViewController
Present a ViewController inside guard statement swift
我正在尝试 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
}
我想知道这是否是最佳做法,因为 return 在呈现 viewcontroller 之后没有多大意义,但在 guard
语句中需要它作为 guard
声明一定不能落空。
您可以尝试 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”语句使提前退出成为可能,它强调有错误的负面案例而不是正面案例。这意味着如果条件不满足,我们可以通过 运行ning 守卫的 else 语句来更早地测试负面情况,而不是等待嵌套条件先通过。 read more with example
回答有关 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)
}
}
}
我正在尝试 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
}
我想知道这是否是最佳做法,因为 return 在呈现 viewcontroller 之后没有多大意义,但在 guard
语句中需要它作为 guard
声明一定不能落空。
您可以尝试 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”语句使提前退出成为可能,它强调有错误的负面案例而不是正面案例。这意味着如果条件不满足,我们可以通过 运行ning 守卫的 else 语句来更早地测试负面情况,而不是等待嵌套条件先通过。 read more with example
回答有关 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)
}
}
}