我正在尝试使用本教程从Swift 3中的通知中获取数据:Developing Push Notifications for iOS 10不幸的是,我收到以下错误:
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 ?? "-")
}
最佳答案
问题是notification
被声明为具有类型为NSObject
的键的字典。但是您尝试使用String
类型的键访问该词典。 String
不是NSObject
。一种解决方案是将String
强制转换为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
。