Middle
Millise lõpetamise käsitleja te kirjutasite?
sobes.tech AI
Vastus AI-lt
Näide lõpetamise töötlejast võrgupäringule koos võimalike vigadega:
// Määrame tulemuse tüübi päringule (edu või viga)
typealias RequestResult<T: Codable> = Result<T, Error>
// Funktsioon võrgupäringut teostada
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
// Selles plokis kutsutakse tavaliselt URLSession.shared.dataTask
// vastuse töötlemise, JSON dekodeerimise ja vigadega.
// Näide töötlemisest (eeldame, et saadi edukas vastus ja andmed)
let sampleData = Data() // Siia peaksid olema tegelikud andmed
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(T.self, from: sampleData)
completion(.success(decodedData)) // Kutsume lõpetaja edukalt
} catch {
completion(.failure(error)) // Kutsume lõpetaja veaga, kui dekodeerimine ebaõnnestub
}
// Näide võrgu- või serverivea töötlemisest
// let networkError = URLError(.notConnectedToInternet)
// completion(.failure(networkError)) // Kutsume lõpetaja võrguveaga
}
// Näide kasutamisest:
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("Edu! Saadud andmed: \(data)")
case .failure(let error):
print("Päringu viga: \(error.localizedDescription)")
}
}