Sobes.tech
Middle

Hansı tamamlanma idarəedicisini yazdınız?

sobes.tech Süni İntellekt

AI-dan cavab

Şəbəkə sorğusu üçün mümkün səhvlərlə tamamlanma idarəedicisinin nümunəsi:

// Sorğu nəticəsi üçün tip təyin edirik (uğur və ya səhv)
typealias RequestResult<T: Codable> = Result<T, Error>

// Şəbəkə sorğusu həyata keçirmək üçün funksiya
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
    // Bu blokda adətən URLSession.shared.dataTask çağırılır
    // cavabın işlənməsi, JSON dekodlaşdırılması və səhvlər.

    // Nümunə işləmə (tutaq ki, uğurlu cavab və məlumatlar alınıb)
    let sampleData = Data() // Burada real məlumatlar olmalıdır
    let decoder = JSONDecoder()

    do {
        let decodedData = try decoder.decode(T.self, from: sampleData)
        completion(.success(decodedData)) // Uğurlu nəticə ilə tamamla
    } catch {
        completion(.failure(error)) // Dekodlama alınmazsa, səhv ilə tamamla
    }

    // Şəbəkə və ya server səhvlərinin işlənməsi nümunəsi
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Şəbəkə səhvi ilə tamamla
}

// İstifadə nümunəsi:
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("Uğur! Alınan məlumatlar: \(data)")
    case .failure(let error):
        print("Sorğu xətası: \(error.localizedDescription)")
    }
}