Middle
Koji ste handler za završetak napisali?
sobes.tech АИ
Одговор од АИ
Primer handlera za završetak za mrežni zahtev sa mogućim greškama:
// Definišemo tip za rezultat zahteva (uspeh ili greška)
typealias RequestResult<T: Codable> = Result<T, Error>
// Funkcija za izvršenje mrežnog zahteva
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
// U ovom bloku, obično, se poziva URLSession.shared.dataTask
// sa obradom odgovora, dekodiranjem JSON i greškama.
// Primer obrade (pretpostavimo da je uspešan odgovor i podaci primljeni)
let sampleData = Data() // Ovde bi trebalo da budu pravi podaci
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(T.self, from: sampleData)
completion(.success(decodedData)) // Pozivamo completion sa uspehom
} catch {
completion(.failure(error)) // Pozivamo completion sa greškom ako dekodiranje ne uspe
}
// Primer obrade greške mreže ili servera
// let networkError = URLError(.notConnectedToInternet)
// completion(.failure(networkError)) // Pozivamo completion sa greškom mreže
}
// Primer upotrebe:
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("Uspeh! Primljeni podaci: \(data)")
case .failure(let error):
print("Greška u zahtevu: \(error.localizedDescription)")
}
}