【发布时间】:2018-07-23 05:55:06
【问题描述】:
我正在尝试从 [AnyHashable: Any] 类型的变量访问特定值,但是,我在访问任何值时遇到错误。我已经浏览了有关此问题的互联网,但我没有得到任何具体的解决方案。那么还有其他方法可以访问它们吗?请提前帮助和感谢。
出现错误的函数
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
if let messageID = userInfo[gcmMessageIDKey] {
print("Message ID: \(messageID)")
}
//Print full message
print(userInfo)
guard let aps = userInfo[AnyHashable("gcm.notification.data")],
let data = aps["filters"] as! String else { // Getting the error here
return
}
print(aps)
completionHandler(UIBackgroundFetchResult.newData)
}
在打印 userInfo 时获取数据
[AnyHashable("gcm.notification.data"): {"filters":"fjjnbbx zjbxzj","history":"dsfdxf","message":"value1","source":"message source"}]
【问题讨论】:
-
请search on the error。这已经讨论了很多很多次了。
-
@rmaddy 我已经在堆栈溢出时查找此错误,但它们与 [AnyHashable: Any] 类型无关
-
请将代码、数据、日志、错误消息等以文本(而非图像)形式发布,以便搜索
-
像这样添加一个守卫:guard let info = userInfo as? [String: Any] else {return} then 你可以检查一下,guard let aps = info["gcm.notification.data"] as? [String: Any],让 data = aps["filters"] as? String else {return} 我想这会起作用。
-
@ShivamPokhriyal 我已经发布了解决问题的答案,感谢您的帮助:)
标签: ios swift push-notification userinfo