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.
Pratik örneğe geçelim. Bir arama kutusundaki yazıyı dinle ve sonuçları göster:
1import Combine23class SearchViewModel: ObservableObject {4@Published var searchText = ""5@Published var results: [String] = []6private var cancellables = Set<AnyCancellable>()78init() {9$searchText.debounce(for:.milliseconds(300), scheduler: DispatchQueue.main).filter {!$0.isEmpty }.map { query in10["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.
0 yorum