在Swift 3之前,我使用的是:
guard let data = Data(contentsOf: url) else {
print("There was an error!)
return
}
然而,我现在不得不使用do
、try
和catch
。我不熟悉这个语法。我该如何复制这种行为?
发布于 2016-09-28 23:46:04
这里的不同之处在于,Data(contentsOf: url)
不再返回Optional,它抛出。
因此您可以在Do-Catch中使用它,但不能使用guard
do {
let data = try Data(contentsOf: url)
// do something with data
// if the call fails, the catch block is executed
} catch {
print(error.localizedDescription)
}
请注意,您仍然可以将guard
与try?
一起使用,而不是try
,但随后可能的错误消息将被忽略。在这种情况下,您不需要Do-Catch块:
guard let data = try? Data(contentsOf: url) else {
print("There was an error!")
// return or break
}
// do something with data
https://stackoverflow.com/questions/39751923
复制相似问题