使用RxSwift创建一个observable

时间:2017-02-02 17:39:23

标签: ios swift rx-swift

我正在使用RxSwift,我正在尝试扩展另一个我正在使用的库来制作可观察的内容。

每次值更改时,库基本上都会调用委托方法,并且我想挂钩到这个,每当它调用委托时,也要将新值添加到我想在子类中创建的可观察序列。

我已经看到了如何创建可观察序列,但是在每个示例next中,事件被发送到给定Observable.create方法的块内的观察者。我不知道如何将这个块传递给create从“外部”添加到可观察序列中。

我只想创建一些我可以观察到的东西,或者可以用RxSwift驱动东西,并在某些点手动添加到序列中。

如果有人能指出我正确的方向,我会非常感激,因为我对此很陌生。

1 个答案:

答案 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)      
}