Olá, Rodrigo.
Tudo bem?
Entendo que você está tendo problemas com o Alamofire e o uso de async/await. O Alamofire 5.x ainda não suporta nativamente async/await do Swift. Isso significa que você não pode usar try await request.responseDecodable(of: [Movie].self)
diretamente. No entanto, você pode criar uma extensão para o Alamofire que suporte async/await. Aqui está um exemplo de como você pode fazer isso:
import Alamofire
extension DataRequest {
func responseDecodable<T: Decodable>(of type: T.Type) async throws -> T {
return try await withCheckedThrowingContinuation { continuation in
self.responseDecodable(of: T.self) { response in
switch response.result {
case .success(let value):
continuation.resume(returning: value)
case .failure(let error):
continuation.resume(throwing: error)
}
}
}
}
}
Agora, você pode usar try await
com o Alamofire da seguinte maneira:
func getMovies() async throws -> [Movie] {
let urlString = baseURL + "/movies"
guard let url = URL(string: urlString) else {
throw MovieServiceError.invalidURL
}
let request = AF.request(url)
let data: [Movie] = try await request.responseDecodable(of: [Movie].self)
return data
}
Por favor, note que este exemplo é apenas para fins demonstrativos e pode não ser perfeito para o seu caso. Espero ter ajudado e bons estudos!