質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

435閲覧

URLSessionでデータをポストするメソッドにasync/awaitを対応させたい

hodoru3sei

総合スコア284

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2022/09/02 14:54

以下のような処理を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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

upload(for:from:delegate:) | Apple Developer Documentation

asyncのついたuploadはこちらでしょうか。
(Data, URLResponse)が戻ってくるみたいです。

投稿2022/09/02 23:22

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問