我正在使用RxSwift,我正在尝试扩展另一个我正在使用的库来制作可观察的内容。
每次值更改时,库基本上都会调用委托方法,并且我想挂钩到这个,每当它调用委托时,也要将新值添加到我想在子类中创建的可观察序列。
我已经看到了如何创建可观察序列,但是在每个示例next
中,事件被发送到给定Observable.create
方法的块内的观察者。我不知道如何将这个块传递给create
从“外部”添加到可观察序列中。
我只想创建一些我可以观察到的东西,或者可以用RxSwift驱动东西,并在某些点手动添加到序列中。
如果有人能指出我正确的方向,我会非常感激,因为我对此很陌生。
答案 0 :(得分:4)
Observable
是只读接口。由Observable.create
创建的序列只能生成在施工时给出的值,仅此而已。你不能添加东西"用它,用你的话。用RxSwift术语来说,你不能只使用Observable
接口,还需要ObserverType
- 它还必须观察你的变异值。在RxSwift中有多种方法可以做到这一点,但我认为你需要PublishSubject
:
let value = PublishSubject<YourType>()
let disposer = DisposeBag()
init() {
value.subscribe(onNext: { (newValue) in
// use newValue ...
}).addDisposableTo(disposer)
}
func yourDelegateHandler(newValue: YourType)
{
value.onNext(newValue)
}