Sobes.tech
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)) // Обаждаме се на completion с успех
    } catch {
        completion(.failure(error)) // Обаждаме се на completion с грешка, ако декодирането не успее
    }

    // Пример за обработка на грешка при мрежа или сървър
    // let networkError = URLError(.notConnectedToInternet)
    // completion(.failure(networkError)) // Обаждаме се на completion с мрежова грешка
}

// Пример за използване:
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)")
    }
}