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