如何将多个观察者绑定到一个ControlProperty

rom*_*hyn 3 ios swift rx-swift

我需要绑定slider.rx.value到具有不同映射的2个观察者。

slider.rx.value.map  { [unowned self] in self.formatter.string(from: NSNumber(value: $0)) ?? "" }
    .bindTo(textFieldAlpha.rx.text)
    .addDisposableTo(disposeBag)

slider.rx.value.map { Enhance.Global(alpha: $0) }
    .bindTo(enhance)
    .addDisposableTo(disposeBag)
Run Code Online (Sandbox Code Playgroud)

但我似乎只有最后一次绑定有效。如何实现呢?

chr*_*low 5

这样可以完成您想要的吗?

let observable = slider.rx.value.shareReplay(1)

observable.map  { [unowned self] in self.formatter.string(from: NSNumber(value: $0)) ?? "" }
    .bindTo(textFieldAlpha.rx.text)
    .disposed(by: disposeBag)

observable.map { Enhance.Global(alpha: $0) }
    .bindTo(enhance)
    .disposed(by: disposeBag)
Run Code Online (Sandbox Code Playgroud)

如果您不需要缓冲区,则可以选择

let observable = slider.rx.value.share()
Run Code Online (Sandbox Code Playgroud)

这也是RxSwift不错的备忘单的链接https://www.cheatography.com/donghua-li/cheat-sheets/rxswift-operators/