LoginSignup
5
4

More than 1 year has passed since last update.

【Swift】Alamofireでasync/awaitを使う

Posted at

はじめに

「alamofire async」で検索するとwithCheckedThrowingContinuationを使ってasyncを使用している記事が多く出てきますが、実は標準でasync/awaitを使えるみたいです。
今回はそのやり方を紹介できたらと思います。

やりかた

String

let response = await AF.request(url, method: .get, headers: headers).serializingString().response
switch response.result {
case .success(let data):
    print(type(of: data)) // String
case .failure(let error):
    print(type(of: error)) // AFError
}

Data

let response = await AF.request(url, method: .get, headers: headers).serializingData().response
switch response.result {
case .success(let data):
    print(type(of: data)) // Data
case .failure(let error):
    print(type(of: error)) // AFError
}

Decodable

let response = await AF.request(url, method: .get, headers: headers).serializingDecodable(StatusesShow.self).response
switch response.result {
case .success(let data):
    print(type(of: data)) // StatusesShow
case .failure(let error):
    print(type(of: error)) // AFError
}

カスタムレスポンス

カスタムレスポンスの作成方法はこちら

let result = await AF.request(url, method: .get, headers: headers).serializingResponse(using: TwitterDecodableResponseSerializer<StatusesShow>()).value
switch result {
case .success(let data):
    print(type(of: data)) // StatusesShow
case .failure(let error):
    print(type(of: error)) // TwitterError
}

おわり

日本語の記事が1つも見つからなかったので意外と知られてないかも??

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4