簡體   English   中英

如何檢查 RXSwift 中的 observable 是否為空?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM