Я сохранил данные в области и покажу их в UITableView
, используя RxRealmDataSources следующим образом -
let items = Model.getChangesetObservable()
let dataSource = RxTableViewRealmDataSource<Item>(cellIdentifier: "ItemTableViewCell", cellType: ItemTableViewCell.self) { cell, ip, item in
cell.titleLabel.text = item.title
}
items.bind(to: tableView.rx.realmChanges(dataSource)).disposed(by: bag)
Приведенный выше код работает правильно, и элементы отображаются в UITableView
Я бы хотел выполнить поиск, чтобы в UITableView
отображались только отфильтрованные элементы.Я добавил UISearchBar
и попытался выполнить поиск следующим образом -
let dataSource = RxTableViewRealmDataSource<Item>(cellIdentifier: "ItemTableViewCell", cellType: ItemTableViewCell.self) { cell, ip, item in
cell.titleLabel.text = item.title
}
searchBar.rx.text
.orEmpty
.asObservable().flatMapLatest { (query) -> Observable<(AnyRealmCollection<Item>, RealmChangeset?)> in
if query.isEmpty {
return Model.getChangesetObservable()
}
return Model.getChangesetObservable(query: query)
}.bind(to: tableView.rx.realmChanges(dataSource)).disposed(by: bag)
Когда представление загружено, все элементы отображаются, как и ожидалось.Однако после того, как мы введем в строку поиска, UITableView
не обновляется.
Кто-нибудь может указать, что я делаю неправильно?