Middle
Milyen befejező kezelőt írtál?
sobes.tech MI
Válasz az MI-től
Példa a befejező kezelőre egy hálózati kéréshez, amely lehetséges hibákat tartalmaz:
// A kérés eredményének típusának meghatározása (siker vagy hiba)
typealias RequestResult<T: Codable> = Result<T, Error>
// Funkció hálózati kérés végrehajtására
func performRequest<T: Codable>(url: URL, completion: @escaping (RequestResult<T>) -> Void) {
// Ebben a blokkban általában a URLSession.shared.dataTask hívás történik
// válaszkezeléssel, JSON dekódolással és hibákkal.
// Példa kezelés (feltételezzük, hogy sikeres válasz és adatok érkeztek)
let sampleData = Data() // Itt valódi adatoknak kellene lenniük
let decoder = JSONDecoder()
do {
let decodedData = try decoder.decode(T.self, from: sampleData)
completion(.success(decodedData)) // A befejezést sikerrel hívjuk meg
} catch {
completion(.failure(error)) // Dekódolási hiba esetén hívjuk meg a befejezést hibával
}
// Hálózati vagy szerverhiba kezelés példája
// let networkError = URLError(.notConnectedToInternet)
// completion(.failure(networkError)) // Hálózati hibával hívjuk meg a befejezést
}
// Használati példa:
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("Siker! Kapott adatok: \(data)")
case .failure(let error):
print("Kérés hiba: \(error.localizedDescription)")
}
}