ios - Swift NotificationCenter 将 userInfo 传递给观察 View Controller

标签 ios swift notificationcenter

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

观察者:

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

关于ios - Swift NotificationCenter 将 userInfo 传递给观察 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49289011/

相关文章:

ios - swift - 在 Controller 之间切换后更新计时器并更新标签

swift - 由于未捕获的异常 'NSInvalidArgumentException' 而终止应用程序,原因 : '-[__NSCFData earlierDate:]

ios - 导航栏透明swift 5

swift - 关于 UIApplicationWillEnterForeground Swift 的通知中心观察员

ios - 无法同时满足分段控制中的约束

ios - 在诸如fetchIfNeededInBackgroundWithBlock之类的 block 中使用PFObject的子类时出现问题

iphone - 如何避免使用 xcode 下载应用程序数据

ios - 加速 loadHTMLString-d 内容的 WKWebView 呈现的策略?

ios - 打电话回来后从通知中心收到通知

swift - NotificationCenter 将 swift 3 迁移到 swift 4.2 的问题