Sobes.tech
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.