Sobes.tech
Middle

Millist lõpetamise käsitlejat te kirjutasite?

sobes.tech AI

Vastus AI-lt

Olen kirjutanud paljon lopetusohjelmia erilaisiin tehtäviin, mukaan lukien:

  • Verkkopyyntöjen tulosten käsittely (tietojen hakeminen, suoritustila).
  • Asynkroniset toiminnot tietokantojen kanssa (tallentaminen, lukeminen, päivittäminen).
  • Tiedostojärjestelmän toiminnot (lukeminen, kirjoittaminen, poistaminen).
  • Animaatiot ja käyttöliittymät (animaatioiden loppuunsaattaminen, käyttäjän eleiden käsittely).
  • Mukautetut asynkroniset toiminnot, joissa voidaan välittää tuloksia ja virheitä.

Esimerkiksi työskentelyssä URLSession-kanssa käytän usein tätä mallia:

URLSession.shared.dataTask(with: url) { data, response, error in
    if let error = error {
        // Virheen käsittely
        completion(.failure(error))
        return
    }
    guard let httpResponse = response as? HTTPURLResponse,
          (200...299).contains(httpResponse.statusCode),
          let data = data else {
        // Virheellinen vastaus tai tiedot
        completion(.failure(URLError(.badServerResponse)))
        return
    }
    // Menestyksekäs tietojen käsittely
    do {
        let model = try JSONDecoder().decode(SomeModel.self, from: data)
        completion(.success(model))
    } catch {
        // Dekoodausvirheen käsittely
        completion(.failure(error))
    }
}.resume()

missä completion on (Result<SomeModel, Error>) -> Void-tyyppinen sulku. Result-käyttö mahdollistaa selkeän erottelun onnistuneen lopputuloksen ja virheen välillä.