Middle
Qaysi yakunlovchi handler yozdingiz?
sobes.tech AI
AIdan javob
Men turli vazifalar uchun ko'plab yakunlovchi handlerlar yozganman, jumladan:
- Tarmoq so'rovlarining natijalarini qayta ishlash (ma'lumotlarni olish, bajarilish holati).
- Ma'lumotlar bazasi bilan asinxron operatsiyalar (saqlash, o'qish, yangilash).
- Fayl tizimi operatsiyalari (o'qish, yozish, o'chirish).
- Animatsiyalar va foydalanuvchi interfeyslari (animatsiyalarni yakunlash, foydalanuvchi harakatlarini qayta ishlash).
- Natija va xatolarni uzatish imkoniyatiga ega maxsus asinxron operatsiyalar.
Masalan, URLSession bilan ishlashda men ko'pincha quyidagi shablonni ishlataman:
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
// Xatoni qayta ishlash
completion(.failure(error))
return
}
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode),
let data = data else {
// Noto'g'ri javob yoki ma'lumotlarni qayta ishlash
completion(.failure(URLError(.badServerResponse)))
return
}
// Ma'lumotlarni muvaffaqiyatli qayta ishlash
do {
let model = try JSONDecoder().decode(SomeModel.self, from: data)
completion(.success(model))
} catch {
// Dekodlash xatolarini qayta ishlash
completion(.failure(error))
}
}.resume()
bu yerda completion (Result<SomeModel, Error>) -> Void turidagi closure. Resultdan foydalanish muvaffaqiyat va xatolarni aniq ajratishga imkon beradi.