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ä.