Middle
Hansı tamamlanma işləyicisini yazdınız?
sobes.tech Süni İntellekt
AI-dan cavab
Müxtəlif tapşırıqlar üçün çoxsaylı tamamlanma idarəediciləri yazmışam, o cümlədən:
- Şəbəkə sorğularının nəticələrinin işlənməsi (məlumatların alınması, icra vəziyyəti).
- Verilənlər bazası ilə asinxron əməliyyatlar (saxlama, oxuma, yeniləmə).
- Fayl sisteminin əməliyyatları (oxuma, yazma, silmə).
- Animasiya və istifadəçi interfeysləri (animasiyaları tamamlayır, istifadəçi jestlərini emal edir).
- Nəticə və səhvləri ötürmək imkanı olan xüsusi asinxron əməliyyatlar.
Məsələn, URLSession ilə işləyərkən tez-tez bu şablonu istifadə edirəm:
URLSession.shared.dataTask(with: url) { data, response, error in
if let error = error {
// Səhv işlənməsi
completion(.failure(error))
return
}
guard let httpResponse = response as? HTTPURLResponse,
(200...299).contains(httpResponse.statusCode),
let data = data else {
// Etibarsız cavab və ya məlumatların işlənməsi
completion(.failure(URLError(.badServerResponse)))
return
}
// Məlumatların uğurlu işlənməsi
do {
let model = try JSONDecoder().decode(SomeModel.self, from: data)
completion(.success(model))
} catch {
// Dekodlaşdırma səhvinin işlənməsi
completion(.failure(error))
}
}.resume()
burada completion (Result<SomeModel, Error>) -> Void tipində closure-dır. Result-dan istifadə, uğurlu və səhv tamamlamalarını aydın şəkildə ayırmağa imkan verir.