Sobes.tech
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)")
    }
}