以下のような処理をasync/awaitに移行させたいと考えています。
swift
1let task = URLSession.shared.uploadTask(with: request, from: uploadData) { data, response, error in 2 if let error = error { 3 result(.failure(error)) 4 return 5 } 6 7 guard let response = response as? HTTPURLResponse, 8 (200...299).contains(response.statusCode) else { 9 if error != nil { 10 result(.failure(error!)) 11 } 12 return 13 } 14 15 guard let data = data, let jsonData = try? JSONDecoder().decode(ResponseData.self, from: data) else { 16 result(.failure(error!)) 17 return 18 } 19 result(.success(jsonData.converted)) 20} 21task.resume()
以下のように定義はできたのできて、errorとresponseは書き換えることができたのですが、dataを持っていないのでどうしたら良いのかわからず困っています。
どうしたら良いのでしょうか
Swift
1let result = try await URLSession.shared.uploadTask(with: request, from: uploadData) 2if let error = result.error { 3 throw Errors.serverError 4} 5 6guard let response = result.response as? HTTPURLResponse, 7 (200...299).contains(response.statusCode) else { 8 throw Errors.serverError 9} 10 11// ここがうまく書き換えられず困っています 12//guard let data = data, let jsonData = try? JSONDecoder().decode(Rubi.self, from: data) else { 13// return 14//} 15 16return jsonData.converted
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。