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