swift - 在 RxSwift 中合并两个通知观察者

标签 swift rx-swift reactivex

我有这段代码:

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'

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

最佳答案

.merge() 结合了多个 Observables 所以你需要做 appActiveNotifications.toObservable() 然后调用 .merge ()就可以了

编辑: 或者作为 RxSwift's 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)

关于swift - 在 RxSwift 中合并两个通知观察者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36354927/

相关文章:

python - RxPy : Sort hot observable between (slow) scan executions

java - RxJava2 将两个 Flowables 压缩为一个

swift - 用户默认值尝试设置非属性列表对象

ios - RxSwift 订阅数据模型属性更改的正确方法

json - RxSwift 解析 JSON 数组

swift - Rxswift + Moya + Moya-ObjectMapper fatal error

java - 为什么多个 RXJava Observables 没有发生并行执行?

swift - 如何使用顺序 ID 从 Firebase 检索随机对象?

ios - Swift 自定义单元格如果要在标签文本框之间更改

ios - 在 swift 中分享单个 gif