正确使用 Swift Guard 关键字?
Proper Use of the Swift Guard Keyword?
我一直在查找如何在 Swift 中使用 guard 关键字。最近一位开发人员告诉我,如果闭包中没有错误,下面的代码将打印 "success" 。
for attachment in attachments! {
attachment.fetchData { (data, error) in
guard let error = error else {
print(“success”)
return
}
print(error.localizedDescription)
}
我对他的说法有点困惑。在阅读了 Apple 的 closure 和 guard 关键字文档后,在我看来他的代码只有在 出现错误 .
时才会打印出 "success"
我感觉他用反了,但我可能错了。 谁能帮我分解一下,并解释一下在有或没有错误时是否打印成功?
谢谢。
使用 guard 解包错误是非常具有误导性的。您应该使用它来解包数据并确保没有错误,并在出现错误时提前退出您的方法。
只需将您的守卫声明更改为:
guard let data = data, error == nil else {
print(error ?? "")
return
}
我一直在查找如何在 Swift 中使用 guard 关键字。最近一位开发人员告诉我,如果闭包中没有错误,下面的代码将打印 "success" 。
for attachment in attachments! {
attachment.fetchData { (data, error) in
guard let error = error else {
print(“success”)
return
}
print(error.localizedDescription)
}
我对他的说法有点困惑。在阅读了 Apple 的 closure 和 guard 关键字文档后,在我看来他的代码只有在 出现错误 .
时才会打印出 "success"我感觉他用反了,但我可能错了。 谁能帮我分解一下,并解释一下在有或没有错误时是否打印成功?
谢谢。
使用 guard 解包错误是非常具有误导性的。您应该使用它来解包数据并确保没有错误,并在出现错误时提前退出您的方法。
只需将您的守卫声明更改为:
guard let data = data, error == nil else {
print(error ?? "")
return
}