Sobes.tech
Intern

Care este funcția ta preferată în Swift?

sobes.tech AI

Răspuns de la AI

Result un tip de enumerare. Permite gestionarea mai explicită a succesului sau a erorii unei operații, ceea ce face ca codul să fie mai sigur și mai ușor de înțeles.

enum Result<Success, Failure> where Failure : Error {
    case success(Success) // Rezultat de succes cu valoare asociată de tip Success
    case failure(Failure) // Rezultat de eroare cu valoare asociată de tip Failure
}

Avantajele utilizării Result:

  • Indicare explicită: Este clar că funcția poate returna fie o valoare de succes, fie o eroare.
  • Siguranță: Compilatorul forțează tratarea ambelor cazuri (success și failure), prevenind omisiunile în gestionarea erorilor.
  • Citibilitate îmbunătățită: Codul care folosește Result este mai ușor de înțeles, deoarece intenția funcției este clară.
  • Compatibilitate: Se integrează bine cu operațiuni asincrone și gestionarea erorilor.

Exemplu de utilizare:

func fetchData(from url: URL, completion: @escaping (Result<Data, Error>) -> Void) {
    URLSession.shared.dataTask(with: url) { data, response, error in
        if let error = error {
            completion(.failure(error)) // Transmiterea erorii prin failure
            return
        }
        if let data = data {
            completion(.success(data)) // Transmiterea datelor prin success
            return
        }
        // Tratarea scenariilor neașteptate, dacă este necesar
    }.resume()
}

// Utilizarea funcției
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
    switch result {
    case .success(let data):
        print("Date primite: \(data)") // Tratarea cu succes
    case .failure(let error):
        print("Eroare la preluarea datelor: \(error.localizedDescription)") // Tratarea erorii
    }
}