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)")
}
}