Sobes.tech
Middle

Milyen befejező kezelőt írtál?

sobes.tech MI

Válasz az MI-től

Példa a befejező kezelőre egy hálózati kéréshez, amely lehetséges hibákat tartalmaz:

// A kérés eredményének típusának meghatározása (siker vagy hiba)
typealias RequestResult<T: Codable> = Result<T, Error>

// Funkció hálózati kérés végrehajtására
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
    // Ebben a blokkban általában a URLSession.shared.dataTask hívás történik
    // válaszkezeléssel, JSON dekódolással és hibákkal.

    // Példa kezelés (feltételezzük, hogy sikeres válasz és adatok érkeztek)
    let sampleData = Data() // Itt valódi adatoknak kellene lenniük
    let decoder = JSONDecoder()

    do {
        let decodedData = try decoder.decode(T.self, from: sampleData)
        completion(.success(decodedData)) // A befejezést sikerrel hívjuk meg
    } catch {
        completion(.failure(error)) // Dekódolási hiba esetén hívjuk meg a befejezést hibával
    }

    // Hálózati vagy szerverhiba kezelés példája
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Hálózati hibával hívjuk meg a befejezést
}

// Használati példa:
struct SampleData: Codable {
    let id: Int
    let name: String
}

let apiUrl = URL(string: "https://api.example.com/data")!

performRequest(url: apiUrl) { result in
    switch result {
    case .success(let data):
        print("Siker! Kapott adatok: \(data)")
    case .failure(let error):
        print("Kérés hiba: \(error.localizedDescription)")
    }
}