Middle
Milyen befejező kezelőt írtál?
sobes.tech MI
Válasz az MI-től
Számos befejező kezelőt írtam különböző feladatokra, többek között:
- Hálózati kérések eredményeinek feldolgozása (adatok lekérése, végrehajtási állapot).
- Aszinkron műveletek adatbázissal (mentés, olvasás, frissítés).
- Fájlrendszer műveletek (olvasás, írás, törlés).
- Animációk és felhasználói felületek (animációk befejezése, felhasználói gesztusok kezelése).
- Egyedi aszinkron műveletek eredmények és hibák átadásával.
Például, amikor a URLSession-nel dolgozom, gyakran ezt a mintát használom:
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
// Hiba kezelése
completion(.failure(error))
return
}
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode),
let data = data else {
// Érvénytelen válasz vagy adatok kezelése
completion(.failure(URLError(.badServerResponse)))
return
}
// Sikeres adatfeldolgozás
do {
let model = try JSONDecoder().decode(SomeModel.self, from: data)
completion(.success(model))
} catch {
// Dekódolási hiba kezelése
completion(.failure(error))
}
}.resume()
ahol a completion egy (Result<SomeModel, Error>) -> Void típusú closure. A Result használata egyértelműen elválasztja a sikeres befejezést és a hibát.