Sobes.tech
Intern

¿Cuál es tu función favorita en Swift?

sobes.tech AI

Respuesta de la IA

Result es un tipo de enumeración. Permite manejar de manera más explícita la ejecución exitosa o el error de una operación, lo que hace que el código sea más seguro y comprensible.

enum Result<Success, Failure> where Failure : Error {
    case success(Success) // Resultado exitoso con valor asociado de tipo Success
    case failure(Failure) // Resultado de error con valor asociado de tipo Failure
}

Ventajas de usar Result:

  • Indicación explícita: Es claro que la función puede devolver un valor exitoso o un error.
  • Seguridad: El compilador obliga a manejar ambos casos (success y failure), previniendo omisiones en el manejo de errores.
  • Mejor legibilidad: El código que usa Result es más fácil de entender, ya que la intención de la función es clara.
  • Compatibilidad: Se integra bien con operaciones asíncronas y manejo de errores.

Ejemplo de uso:

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)) // Pasar error a través del caso failure
            return
        }
        if let data = data {
            completion(.success(data)) // Pasar datos a través del caso success
            return
        }
        // Manejar escenarios inesperados, si es necesario
    }.resume()
}

// Uso de la función
let someURL = URL(string: "https://example.com")!
fetchData(from: someURL) { result in
    switch result {
    case .success(let data):
        print("Datos recibidos: \(data)") // Manejar resultado exitoso
    case .failure(let error):
        print("Error al obtener datos: \(error.localizedDescription)") // Manejar error
    }
}