[英]How to check if an observable is empty in RXSwift?
我已經像這樣初始化了一個空的可觀察對象:
var subCategories = Observable<[String]>.empty()
我如何檢查可觀察對象是否為空? 如果可觀察對象為空,我想向用戶顯示“空視圖”,否則在 tableview 中顯示數據。
創建一個 bool Observable 來顯示/隱藏您的 emptyView:
let hideEmptyView = subCategories.map{!$0.isEmpty}
然后將此hideEmptyView
Bool Observable 綁定到yourEmptyView.rx.isHidden
您必須在 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)
使用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())
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.