Combine Framework: Reaktif Programlamaya Giriş

Combine, Apple'ın reaktif programlama için sunduğu bir kütüphanedir. Veri akışlarını (publisher-subscriber modeli ile) yönetmeyi sağlar. Basit bir örnek vermek gerekirse: bir butona basıldığında, bir metin alanı değiştiğinde ya da ağ isteğinin sonucunda ne yapılacağını tanımlarsın. Combine bunu otomatik olarak yönetir.

Reaktif programlama nedir? Geleneksel kodda değişkeni elle kontrol edersin. Reaktif yöntemde değişken değişirse, bağlı olan tüm işlemler kendiliğinden çalışır. Örneğin bir arama kutusuna yazı yazarken, sonuçlar anında güncellenir.

Combine'in temel yapı taşları:

Publisher: Veri yayan kaynaktır. Bir değişken, ağ isteği, buton tıklaması veri yayabilir.

Subscriber: Yayılan veriyi dinleyen taraftır. Veri geldiğinde ne yapılacağını tanımlar.

Operators: Veriyi dönüştüren, filtreleyen ara araçlardır.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Pratik örneğe geçelim. Bir arama kutusundaki yazıyı dinle ve sonuçları göster:

1import Combine
2
3class SearchViewModel: ObservableObject {
4@Published var searchText = ""
5@Published var results: [String] = []
6private var cancellables = Set<AnyCancellable>()
7
8init() {
9$searchText.debounce(for:.milliseconds(300), scheduler: DispatchQueue.main).filter {!$0.isEmpty }.map { query in
10["Sonuç: \(query) 1", "Sonuç: \(query) 2"]
11}.assign(to: &$results)
12}
13}

Kod açıklaması:

$searchText

ile yayıncıyı dinlersin. debounce ile 300 milisaniye beklersin (gereksiz sorguları engeller). filter ile boş yazıları yoksayarsın. map ile veriyi dönüştürürsün. assign ile sonucu results'a atarsın.

Çıktı: Arama kutusuna "swift" yazarsan, results otomatik olarak ["Sonuç: swift 1", "Sonuç: swift 2"] olur.

Bu yaklaşım, ağ istekleri, veritabanı sorguları ve UI güncellemeleri için çok kullanışlıdır. Combine sayesinde karmaşık asenkron işlemleri temiz ve okunabilir hale getirirsin.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz