Sobes.tech
Middle

Hangi tamamlayıcı işleyiciyi yazdınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Ağ isteği için olası hatalarla tamamlayıcı işlev örneği:

// İstek sonucu (başarı veya hata) için bir tür tanımlıyoruz
typealias RequestResult<T: Codable> = Result<T, Error>

// Ağ isteği yapmak için fonksiyon
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
    // Bu blokta genellikle URLSession.shared.dataTask çağrısı yapılır
    // yanıtın işlenmesi, JSON çözümlemesi ve hatalar.

    // İşlem örneği (başarılı yanıt ve veri alındığını varsayalım)
    let sampleData = Data() // Burada gerçek veriler olmalı
    let decoder = JSONDecoder()

    do {
        let decodedData = try decoder.decode(T.self, from: sampleData)
        completion(.success(decodedData)) // Tamamlamayı başarıyla çağır
    } catch {
        completion(.failure(error)) // Çözümleme başarısız olursa tamamlamayı hata ile çağır
    }

    // Ağ veya sunucu hatası işleme örneği
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Ağ hatası ile tamamlamayı çağır
}

// Kullanım örneği:
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("Başarı! Alınan veriler: \(data)")
    case .failure(let error):
        print("İstek hatası: \(error.localizedDescription)")
    }
}