Sobes.tech
Middle

Qaysi yakunlovchi handler yozdingiz?

sobes.tech AI

AIdan javob

Tarmoq so'rovi uchun mumkin bo'lgan xatolar bilan yakunlovchi handler misoli:

// So'rov natijasi uchun turni aniqlaymiz (muvaffaqiyat yoki xato)
typealias RequestResult<T: Codable> = Result<T, Error>

// Tarmoq so'rovi uchun funksiya
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
    // Bu blokda odatda URLSession.shared.dataTask chaqiriladi
    // javobni qayta ishlash, JSON dekodlash va xatolar bilan.

    // Misol uchun, muvaffaqiyatli javob va ma'lumotlar qabul qilingan deb faraz qilamiz
    let sampleData = Data() // Bu yerda haqiqiy ma'lumotlar bo'lishi kerak
    let decoder = JSONDecoder()

    do {
        let decodedData = try decoder.decode(T.self, from: sampleData)
        completion(.success(decodedData)) // Yakunlovchini muvaffaqiyat bilan chaqiramiz
    } catch {
        completion(.failure(error)) // Dekodlash muvaffaqiyatsiz bo'lsa, yakunlovchini xato bilan chaqiramiz
    }

    // Tarmoq yoki server xatolarini qayta ishlash misoli
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Tarmoq xatosi bilan yakunlovchini chaqiramiz
}

// Foydalanish misoli:
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("Muvaffaqiyat! Olingan ma'lumotlar: \(data)")
    case .failure(let error):
        print("So'rov xatosi: \(error.localizedDescription)")
    }
}