Как выполнить поиск с использованием RxRealmDataSources? - PullRequest
0 голосов
/ 13 декабря 2018

Я сохранил данные в области и покажу их в 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 не обновляется.

Кто-нибудь может указать, что я делаю неправильно?

...