Open1
Combineでインクリメンタルサーチ
Combineフレームワークを利用して、インクリメンタルサーチを行う場合の例
@Published var searchText: String = ""
private var searchCancellable: AnyCancellable?
// `searchText`に変化があるたびに処理を実行する.
searchCancellable = $searchText
.removeDuplicates() // 同じイベントなら無視する.
.debounce(for: 0.5, scheduler: RunLoop.main) // 0.5秒以内はイベントが発行されない.
.sink(receiveValue: { str in
if str.isEmpty {
// 検索結果をクリア.
self.searchedProducts = nil
}
else {
// 実際の検索処理.
self.filteredProductBySearch()
}
})