Sobes.tech
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.