如何使用RxRealmDataSources执行搜索?

时间:2018-12-13 06:39:32

标签: ios swift realm uisearchbar rx-swift

我已将数据存储在领域中,并使用RxRealmDataSourcesUITableView中进行显示,如下所示-

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不会得到更新。

有人可以指出我在做什么错吗?

0 个答案:

没有答案