Sobes.tech
Middle

Welchen Completion-Handler hast du geschrieben?

sobes.tech KI

Antwort von AI

Ich habe zahlreiche Completion-Handler für verschiedene Aufgaben geschrieben, darunter:

  • Verarbeitung von Ergebnissen von Netzwerk-Anfragen (Datenabruf, Ausführungsstatus).
  • Asynchrone Operationen mit Datenbanken (Speichern, Lesen, Aktualisieren).
  • Datei-System-Operationen (Lesen, Schreiben, Löschen).
  • Animationen und Benutzeroberflächen (Animationen abschließen, Benutzer-Gesten verarbeiten).
  • Benutzerdefinierte asynchrone Operationen mit Ergebnis- und Fehlerübertragung.

Zum Beispiel verwende ich beim Arbeiten mit URLSession oft dieses Muster:

URLSession.shared.dataTask(with: url) { data, response, error in
    if let error = error {
        // Fehlerbehandlung
        completion(.failure(error))
        return
    }
    guard let httpResponse = response as? HTTPURLResponse,
          (200...299).contains(httpResponse.statusCode),
          let data = data else {
        // Behandlung ungültiger Antwort oder Daten
        completion(.failure(URLError(.badServerResponse)))
        return
    }
    // Erfolgreiche Datenverarbeitung
    do {
        let model = try JSONDecoder().decode(SomeModel.self, from: data)
        completion(.success(model))
    } catch {
        // Fehler bei der Dekodierung
        completion(.failure(error))
    }
}.resume()

wobei completion eine Closure vom Typ (Result<SomeModel, Error>) -> Void ist. Die Verwendung von Result ermöglicht eine klare Trennung zwischen erfolgreichem Abschluss und Fehler.