0

我已经像这样初始化了一个空的可观察对象:

var subCategories = Observable<[String]>.empty()

我如何检查可观察对象是否为空?如果可观察对象为空,我想向用户显示“空视图”,否则在 tableview 中显示数据。

4

3 回答 3

1

创建一个 bool Observable 来显示/隐藏你的 emptyView:

let hideEmptyView = subCategories.map{!$0.isEmpty}

hideEmptyView然后将此Bool Observable绑定到yourEmptyView.rx.isHidden

于 2019-09-18T14:19:53.963 回答
1

您必须在 Observable 上使用过滤器:

viewModel.filteredUsers.asObservable()
        .filter({ [weak self] array in
            guard let self = self else {return true}
            
            if array.isEmpty {
                self.emptyListContainer.alpha = 1
                self.tableView.alpha = 0
            } else {
                self.emptyListContainer.alpha = 0
                self.tableView.alpha = 1
                
            }
            return true
        })
        .bind(to: tableView.rx.items(cellIdentifier: "ContactsTableViewCell", cellType: ContactsTableViewCell.self)) { (row, user, cell) in
        cell.titleLbl.text = user.name
    }
    .disposed(by: disposeBag)
于 2022-01-07T12:39:26.263 回答
-1

使用Observable以外的BehaviourRelay

import RxCocoa
import RxSwift

var subCategories = BehaviorRelay<[String]>(value: [])
let emptyView = UIStackView()

func addObservers() {
    subCategories.asObservable().subscribe { _ in
        self.emptyView.isHidden = !self.subCategories.value.isEmpty
    }.disposed(by: DisposeBag())
}
于 2020-08-14T08:11:33.747 回答