Middle
Quel gestionnaire de complétion avez-vous écrit?
sobes.tech IA
Réponse de l'IA
Exemple de gestionnaire de complétion pour une requête réseau avec erreurs possibles :
// Définir un type pour le résultat de la requête (succès ou erreur)
typealias RequestResult<T: Codable> = Result<T, Error>
// Fonction pour effectuer une requête réseau
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
// Dans ce bloc, généralement, on effectue l'appel à URLSession.shared.dataTask
// avec gestion de la réponse, décodage JSON et erreurs.
// Exemple de traitement (supposons une réponse réussie et des données)
let sampleData = Data() // Ici, les données réelles devraient être présentes
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(T.self, from: sampleData)
completion(.success(decodedData)) // Appeler la completion avec succès
} catch {
completion(.failure(error)) // Appeler la completion avec une erreur si le décodage échoue
}
// Exemple de gestion d'erreur réseau ou serveur
// let networkError = URLError(.notConnectedToInternet)
// completion(.failure(networkError)) // Appeler la completion avec erreur réseau
}
// Exemple d'utilisation :
struct SampleData: Codable {
let id: Int
let name: String
}
let apiUrl = URL(string: "https://api.example.com/data")!
performRequest(url: apiUrl) { result in
switch result {
case .success(let data):
print("Succès ! Données reçues : \(data)")
case .failure(let error):
print("Erreur de requête : \(error.localizedDescription)")
}
}