Avant Swift 3 J'utilisais:
guard let data = Data(contentsOf: url) else {
print("There was an error!)
return
}
Cependant, je dois maintenant utiliser do
, try
et catch
. Je ne suis pas familier avec cette syntaxe. Comment pourrais-je reproduire ce comportement?
La différence ici est que Data(contentsOf: url)
ne renvoie plus un optionnel, il le jette.
Vous pouvez donc l’utiliser dans Do-Catch mais sans 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)
}
Notez que vous pouvez toujours utiliser guard
avec try?
au lieu de try
, mais le message d'erreur possible est ignoré. Dans ce cas, vous n'avez pas besoin d'un bloc Do-Catch:
guard let data = try? Data(contentsOf: url) else {
print("There was an error!")
// return or break
}
// do something with data