36 lines
1.1 KiB
Swift
36 lines
1.1 KiB
Swift
//
|
|
// NotificationCenter+Rx.swift
|
|
// RxCocoa
|
|
//
|
|
// Created by Krunoslav Zaher on 5/2/15.
|
|
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
|
|
//
|
|
|
|
import class Foundation.NotificationCenter
|
|
import struct Foundation.Notification
|
|
|
|
#if !RX_NO_MODULE
|
|
import RxSwift
|
|
#endif
|
|
|
|
extension Reactive where Base: NotificationCenter {
|
|
/**
|
|
Transforms notifications posted to notification center to observable sequence of notifications.
|
|
|
|
- parameter name: Optional name used to filter notifications.
|
|
- parameter object: Optional object used to filter notifications.
|
|
- returns: Observable sequence of posted notifications.
|
|
*/
|
|
public func notification(_ name: Notification.Name?, object: AnyObject? = nil) -> Observable<Notification> {
|
|
return Observable.create { [weak object] observer in
|
|
let nsObserver = self.base.addObserver(forName: name, object: object, queue: nil) { notification in
|
|
observer.on(.next(notification))
|
|
}
|
|
|
|
return Disposables.create {
|
|
self.base.removeObserver(nsObserver)
|
|
}
|
|
}
|
|
}
|
|
}
|