Swift 3の前に使用していたもの:
guard let data = Data(contentsOf: url) else {
print("There was an error!)
return
}
ただし、今はdo
、try
、およびcatch
を使用する必要があります。私はこの構文に精通していません。この動作をどのように複製しますか?
ここでの違いは、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