代码之家  ›  专栏  ›  技术社区  ›  Marcin Kapusta

将多个不同的观察值组合成一个观察值

  •  0
  • Marcin Kapusta  · 技术社区  · 7 年前

    让我们看看我的输入和输出示例。

    import RxSwift
    import RxCocoa
    
    class ModelView {
    
        private let api: ApiType
    
        // inputs
        let inType: Variable<MWItemQueryType>
        let inFilterRetailers: Variable<Set<MWRetailer>>
        let inFilterColors: Variable<Set<MWColor>>
        let inFilterPriceRanges: Variable<Set<MWPriceRange>>
    
        // outputs
        let outQuery: Observable<MWItemQuery>
    
        init(initialType: MWItemQueryType, api: ApiType) {
            self.api = api
            self.inType = Variable(initialType)
            self.inFilterRetailers = Variable(Set<MWRetailer>())
            self.inFilterColors = Variable(Set<MWColor>())
            self.inFilterPriceRanges = Variable(Set<MWPriceRange>())
    
            // TODO How to setup outQuery signal here
        }
    }
    

    所以我对发出信号的设置outQuery有问题 MWItemQuery MWItemQuery 当其中一个输入参数改变时,必须发出信号。这个 MWItemQuery

    2 回复  |  直到 7 年前
        1
  •  4
  •   xandrefreire    7 年前

    combineLatest 可以接受2个以上的参数!

    尝试:

    Observable.combineLatest(inType.asObservable(), inFilterRetailers.asObservable(), inFilterColors.asObservable(), inFilterPriceRanges.asObservable())
        { type, filterRetailers, filterColors, filterPriceRanges in 
            // do something with your data
        }
        .distinctUntilChanged()
        .shareReplay(1)
    
        2
  •  1
  •   beeth0ven    7 年前

    combineLatest 操作员,它可以组合2..8 observables . 有不同的版本,采取不同的数量 .