New versioning NSNotificationCenter in reactive swift



我想知道下面我提到的 NSNotificationCenter 在 swift 3.0 中的代码行可以转换为 RxSwif/RxCocoa

let imageDataDict:[String: UIImage] = ["image": image]
// Post a notification
NSNotificationCenter.defaultCenter().postNotificationName(notificationName, object: nil, userInfo: imageDataDict)
// Register to receive notification in your class
NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(self.showSpinningWheel(_:)), name: notificationName, object: nil)
// handle notification
func showSpinningWheel(notification: NSNotification) {
if let image = notification.userInfo?["image"] as? UIImage {
// do something with your image   
}
}

我假设你在问如何在ReactiveCocoa中做到这一点。在ReactiveCocoa中,所有扩展都可以通过.reactive成员获得:

extension Notification.Name {
  static let myNotification = Notification.Name("myNotification")
}

NotificationCenter.default.reactive.notifications(forName: .myNotification)
  .take(duringLifetimeOf: self)
  .observeValues {
    if let image = $0.userInfo?["image"] as? UIImage {
      // do something with your image
    }
}

NotificationCenter.default.post(name: .myNotification, object: nil, userInfo: ["image": image])

编辑:感谢@jjoelson提到观察的处置。

相关内容

  • 没有找到相关文章

最新更新