11

我有这段代码:

let appActiveNotifications: [Observable<NSNotification>] = [
    NSNotificationCenter.defaultCenter().rx_notification(UIApplicationWillEnterForegroundNotification),
    NSNotificationCenter.defaultCenter().rx_notification(Constants.AppRuntimeCallIncomingNotification)
]

appActiveNotifications.merge()
  .takeUntil(self.rx_deallocated)
  .subscribeNext() { [weak self] _ in
  // notification handling
}
.addDisposableTo(disposeBag)

它应该监听任何一个指定的通知并在任何一个被触发时进行处理。

但是,这不会编译。我收到以下错误:

Value of type '[Observable<NSNotification>]' has no member 'merge'

那我应该如何将这两个信号合并为一个呢?

4

1 回答 1

26

.merge()结合了多个Observables,所以你会想要做appActiveNotifications.toObservable()然后调用.merge()

编辑: 或者作为RxSwift 的 playground中的例子,你可以使用Observable.of()然后使用.merge()它;像这样:

let a = NSNotificationCenter.defaultCenter().rx_notification(UIApplicationWillEnterForegroundNotification)
let b = NSNotificationCenter.defaultCenter().rx_notification(Constants.AppRuntimeCallIncomingNotification)

Observable.of(a, b)
  .merge()
  .takeUntil(self.rx_deallocated)
  .subscribeNext() { [weak self] _ in
     // notification handling
  }.addDisposableTo(disposeBag)
于 2016-04-01T11:46:55.127 回答