Sobes.tech
Middle

Welchen Abschluss-Handler haben Sie geschrieben?

sobes.tech KI

Antwort von AI

Beispiel für einen Abschluss-Handler für eine Netzwerk-Anfrage mit möglichen Fehlern:

// Definieren eines Typs für das Ergebnis der Anfrage (Erfolg oder Fehler)
typealias RequestResult<T: Codable> = Result<T, Error>

// Funktion zur Durchführung einer Netzwerk-Anfrage
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
    // In diesem Block wird normalerweise der Aufruf von URLSession.shared.dataTask durchgeführt
    // mit Verarbeitung der Antwort, JSON-Decodierung und Fehlerbehandlung.

    // Beispiel für die Verarbeitung (angenommen, es wurde eine erfolgreiche Antwort und Daten empfangen)
    let sampleData = Data() // Hier sollten die echten Daten sein
    let decoder = JSONDecoder()

    do {
        let decodedData = try decoder.decode(T.self, from: sampleData)
        completion(.success(decodedData)) // Aufruf der Completion mit Erfolg
    } catch {
        completion(.failure(error)) // Aufruf der Completion mit Fehler, wenn die Decodierung fehlschlägt
    }

    // Beispiel für die Behandlung von Netzwerk- oder Serverfehlern
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Aufruf der Completion mit Netzwerkfehler
}

// Beispiel für die Verwendung:
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("Erfolg! Erhaltene Daten: \(data)")
    case .failure(let error):
        print("Fehler bei der Anfrage: \(error.localizedDescription)")
    }
}