Middle
Кайсы аяктоо иштеткичти жаздыңыз?
sobes.tech AI
AIден жооп
Тармактык суроо үчүн мүмкүн болгон каталар менен бүтүү иштетүүчүнүн мисалы:
// Суроо жыйынтыгы үчүн түр аныктайбыз (жыйынтык же каталар)
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)")
}
}