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