Middle
Ի՞նչ ավարտման հենդլեր եք գրել։
sobes.tech AI
Պատասխան AI-ից
Նմուշ՝ ավարտող handler ցանցային հարցումի համար հնարավոր սխալներով:
// Նշենք արդյունքի տեսակ (հաջողություն կամ սխալ)
typealias RequestResult<T: Codable> = Result<T, Error>
// Ֆունկցիա ցանցային հարցում կատարելու համար
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
// Այս բլոկում սովորաբար կանչվում է URLSession.shared.dataTask
// պատասխանն մշակելու, JSON դեկոդավորելու և սխալների հետ:
// Օրինակ մշակման (կարծում ենք, որ հաջող պատասխան և տվյալներ են ստացվել)
let sampleData = Data() // Այստեղ պետք է լինեն իրական տվյալներ
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(T.self, from: sampleData)
completion(.success(decodedData)) // Կոչում ենք ավարտը հաջողությամբ
} catch {
completion(.failure(error)) // Կոչում ենք ավարտը սխալով, եթե դեկոդավորումը ձախողվի
}
// Օրինակ ցանցի կամ սերվերի սխալի մշակման
// let networkError = URLError(.notConnectedToInternet)
// completion(.failure(networkError)) // Կոչում ենք ավարտը ցանցային սխալով
}
// Օրինակ օգտագործում:
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("Հաջողություն! Ստացված տվյալներ: \(data)")
case .failure(let error):
print("Հարցման սխալ: \(error.localizedDescription)")
}
}