Sobes.tech
Middle

Kuru pabeigšanas apstrādātāju jūs uzrakstījāt?

sobes.tech AI

Atbilde no AI

Piemērs pabeigšanas apstrādātājam tīkla pieprasījumam ar iespējamām kļūdām:

// Rezultāta tipa definēšana pieprasījumam (panākums vai kļūda)
typealias RequestResult<T: Codable> = Result<T, Error>

// Funkcija tīkla pieprasījuma veikšanai
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
    // Šajā blokā parasti tiek izsaukts URLSession.shared.dataTask
    // ar atbildes apstrādi, JSON dekodēšanu un kļūdām.

    // Piemērs apstrādei (pieņemot, ka ir saņemts veiksmīgs atbildes un dati)
    let sampleData = Data() // Šeit būtu jābūt reāliem datiem
    let decoder = JSONDecoder()

    do {
        let decodedData = try decoder.decode(T.self, from: sampleData)
        completion(.success(decodedData)) // Izsaucam pabeigšanu ar panākumiem
    } catch {
        completion(.failure(error)) // Izsaucam pabeigšanu ar kļūdu, ja dekodēšana neizdodas
    }

    // Piemērs tīkla vai servera kļūdas apstrādei
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Izsaucam pabeigšanu ar tīkla kļūdu
}

// Piemērs izmantošanai:
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("Veiksme! Saņemtie dati: \(data)")
    case .failure(let error):
        print("Pieprasījuma kļūda: \(error.localizedDescription)")
    }
}