Ios 使用RxSwift变量中的搜索栏筛选collectionView

Ios 使用RxSwift变量中的搜索栏筛选collectionView,ios,swift,uicollectionview,rx-swift,Ios,Swift,Uicollectionview,Rx Swift,我刚刚开始实现RxSwift 我有下面的函数,可以用Firebase observe调用返回的用户动态填充collectionView,但我很难根据搜索栏中的任何潜在实体动态筛选用户 Rx collectionView绑定: private func bind() { viewModel.users.asObservable() .bind(to: nearbyCollectionView.rx.items(cellIdentifier: "NearbyCell", ce

我刚刚开始实现RxSwift

我有下面的函数,可以用Firebase observe调用返回的用户动态填充collectionView,但我很难根据搜索栏中的任何潜在实体动态筛选用户

Rx collectionView绑定:

private func bind() {
    viewModel.users.asObservable()
        .bind(to: nearbyCollectionView.rx.items(cellIdentifier: "NearbyCell", cellType: NearbyCell.self)) {
            row, user, cell in
            cell.configureCell(user: user)
        }.disposed(by: disposeBag)
}
我应该返回到默认的collectionView实现并简单地使用Rx来动态更新collectionView对象,还是有更好的方法来实现这一点

我的旧实现使用了以下内容:

            if self.viewModel.inSearchMode {
            user = self.viewModel.filteredUsers[indexPath.row]
            cell.configureCell(user: user)
        } else {
            user = self.viewModel.users[indexPath.row]
            cell.configureCell(user: user)
        }

非常感谢你的帮助

您可以使用CombineTest将它们过滤掉

let searchString = searchTextField.rx.text
let filteredUsersObservable = Observable.combineLatest(searchString, viewModel.users, resultSelector: { string, users in
            return users.filter { $0 == string }
        })

filteredUsersObservable
    .bind(to: nearbyCollectionView.rx.items(cellIdentifier: "NearbyCell", cellType: NearbyCell.self)) {
        row, user, cell in
        cell.configureCell(user: user)
    }.disposed(by: disposeBag)

我不确定语法是否完全正确,但我们的想法是在每次文本字段发生变化时获取信号,使其成为可观察的,并与可观察的用户一起过滤。

经过几次修改,这是完美的。非常感谢你的帮助!