0

我一直在寻找如何在 Swift 中使用 guard 关键字。最近一位开发人员告诉我,如果闭包中没有错误,下面的代码将打印“成功” 。

for attachment in attachments! {
    attachment.fetchData { (data, error) in 
        guard let error = error else {
            print(“success”)
            return
        }

        print(error.localizedDescription)
}

我对他的说法有些困惑。在阅读了 Apple 的闭包和保护关键字文档后,在我看来,他的代码只有在出现错误时才会打印出“成功” 。

我觉得他在反向使用它,但我可能错了。有人可以为我分解它并解释在有或没有错误时是否打印成功

谢谢你。

4

1 回答 1

0

使用警卫来解开错误是非常具有误导性的。您应该使用它来解包数据并确保没有错误,并在出现错误时提前退出您的方法。

只需将您的保护声明更改为:

guard let data = data, error == nil else { 
    print(error ?? "") 
    return
}
于 2017-03-02T17:14:34.823 回答