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.