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)) // Обаждаме се на 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)")
}
}