簡體   English   中英

RxSwift-如何具有可讀的CombineLatest事件元素變量名稱?

[英]RxSwift - how to have readable combineLatest event element variable names?

var isCurrentlySearchingAddress = Variable<Bool>(false)
var currentSelectedPlace = Variable<GeocodePlace?>(nil)

當我進行訂閱時

Observable.combineLatest(viewModel.isCurrentlySearchingAddress.asObservable(), viewModel.currentSelectedPlace.asObservable())

如何獲得可讀的變量名,而不是01

在此處輸入圖片說明

如果您僅對next事件感興趣,可以執行以下操作:

Observable.combineLatest(isCurrentlySearchingAddress.asObservable(), currentSelectedPlace.asObservable())
   .subscribe(onNext: { (isSearchingAddress, selectedPlace) in

   })

或這個(如果您想繼續使用subscribe ):

Observable.combineLatest(isCurrentlySearchingAddress.asObservable(), currentSelectedPlace.asObservable())
   .subscribe { event in
      if case let .next(isSearchingAddress, selectedPlace) = event {

      }
   }

您可以這樣做:

    Observable.combineLatest(
        varA.asObservable(), varB.asObservable(),
        resultSelector: { value1, value2 in
            print("\(value1) \(value2)")
    }).observeOn(MainScheduler.instance)
        .subscribe()
        .disposed(by: disposeBag)

在這里,您使用的是subscribe(on:)然后強制展開element 萬一發生錯誤, elementnil ,這將導致崩潰。 強制拆開它不是一個好主意。

如果您確定序列永遠不會發出錯誤,或者您不想處理錯誤,那么最好使用subscribe(onNext:)如下所示:

Observable.combineLatest(viewModel.isCurrentlySearchingAddress.asObservable(), viewModel.currentSelectedPlace.asObservable())
    .subscribe(onNext: { (isCurrentlySearchingAddress, currentSelectedPlace) in
    // Use isCurrentlySearchingAddress: Bool and currentSelectedPlace: GeocodePlace? here.
    if (isCurrentlySearchingAddress) {
        // TODO: 
    }
})

同樣不要忘記將其添加到DisposeBag

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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