Ios Swift 3获取通知数据
我正在尝试使用本教程从swift 3中的通知中获取数据:不幸的是,我遇到以下错误:Ios Swift 3获取通知数据,ios,push-notification,swift3,Ios,Push Notification,Swift3,我正在尝试使用本教程从swift 3中的通知中获取数据:不幸的是,我遇到以下错误: private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) { let aps = notification["aps"] as? [String:AnyObject] let alert = aps["alert"] as? [String:AnyObject] let title =
private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) {
let aps = notification["aps"] as? [String:AnyObject]
let alert = aps["alert"] as? [String:AnyObject]
let title = alert?["title"] as? String
let body = alert?["body"] as? String
return (title ?? "-", body ?? "-")
}
问题在于
通知
被声明为具有NSObject
类型键的字典。但您尝试使用String
类型的键访问该词典<代码>字符串不是NSObject
。一种解决方案是将字符串转换为NSString
修正会出现下一行修正的另一个错误。因此,您的代码最终如下所示:
private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) {
let aps = notification["aps" as NSString] as? [String:AnyObject]
let alert = aps?["alert"] as? [String:AnyObject]
let title = alert?["title"] as? String
let body = alert?["body"] as? String
return (title ?? "-", body ?? "-")
}
说到这里,该教程有很多错误,在很多地方使用了错误的参数类型。此getAlert
方法不应使用NSObject
。它应该是String
问题是通知
被声明为具有NSObject
类型键的字典。但您尝试使用String
类型的键访问该词典<代码>字符串
不是NSObject
。一种解决方案是将字符串转换为NSString
修正会出现下一行修正的另一个错误。因此,您的代码最终如下所示:
private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) {
let aps = notification["aps" as NSString] as? [String:AnyObject]
let alert = aps?["alert"] as? [String:AnyObject]
let title = alert?["title"] as? String
let body = alert?["body"] as? String
return (title ?? "-", body ?? "-")
}
说到这里,该教程有很多错误,在很多地方使用了错误的参数类型。此getAlert
方法不应使用NSObject
。应该是String
你检查过post吗?@Eeshwar是的,检查了很多,没有一个有效请将你的代码作为实际代码发布,不是以图像的形式。您可以在文档中查找@rmaddyHint:LookupDidReceiveEmotentification
,并检查userInfo
参数的类型您是否检查了post?@Eeshwar是检查了很多,没有一个有效请将您的代码作为实际代码发布,不作为图像。您可以在文档中查找@rmaddyHint:LookupDidReceiveEmotentification
,并检查userInfo
参数的类型Swift 3中的通知userInfo
字典是[AnyHashable:Any]
,标准JSON字典是[String:Any]
。OP不应该使用过时的类型。@vadian同意。这就是我在回答中最后一句话的原因。本教程有很多问题,并且到处传播错误的数据类型。我的大部分回答直接解决了当前代码的错误原因,并针对该特定问题提出了一种解决方案。当然,正如我在最后所说的,更好的解决方案是使用正确的类型。Swift 3中的通知userInfo
字典是[AnyHashable:Any]
,标准JSON字典是[String:Any]
。OP不应该使用过时的类型。@vadian同意。这就是我在回答中最后一句话的原因。本教程有很多问题,并且到处传播错误的数据类型。我的大部分回答直接解决了当前代码的错误原因,并针对该特定问题提出了一种解决方案。当然,正如我在最后所说的,更好的解决方案是使用正确的类型。