繁体   English   中英

Swift NotificationCenter将userInfo传递给观察视图控制器

[英]Swift NotificationCenter passing userInfo to observing view controller

我正在尝试将userInfo从对象传递到观察视图控制器。 由于某种原因,它一直崩溃。 这是代码:

观察员:

NotificationCenter.default.addObserver(
        self,
        selector: #selector(self.alarmFired(_:)),
        name: Notification.Name(rawValue: "AlarmFiringNotification"),
        object: nil)

接收功能:

@objc func alarmFired(_ notification: UNNotification) {
    let userInfo = notification.request.content.userInfo
    let title = userInfo["title"] as? String
    let body = userInfo["body"] as? String
    let alert = UIAlertController(title: title, message: body, preferredStyle: .alert)
    let okAction = UIAlertAction(title: "OK", style: .default, handler: nil)
    alert.addAction(okAction)
}

通知广播:

public static func broadcastAlarmFiringNotification(with userInfo: [String: Any]) {
    NotificationCenter.default.post(Notification(name: Notification.Name(rawValue: "AlarmFiringNotification"), object: self, userInfo: userInfo))
}

广播电话:

NotificationBroadcaster.broadcastAlarmFiringNotification(with: ["title": title, "body": body])

但是,它的输出始终崩溃:

2018-03-14 18:51:06.743621-0400 App[33718:871608] -[NSConcreteNotification request]: unrecognized selector sent to instance 0x60c00005c860

2018-03-14 18:51:06.754868-0400 App[33718:871608] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteNotification request]: unrecognized selector sent to instance 0x60c00005c860'

在通知广播中崩溃(NotificationCenter.default.post ...)

我真的很困惑,感谢您的帮助!

UNNotification类不是您想要的。 将签名更改为:

@objc func alarmFired(notification: Notification) {
    let userInfo = notification.userInfo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM