我正在尝试使用本教程从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 ?? "-")
}


ios - Swift 3获取通知数据-LMLPHP

最佳答案

问题是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

10-07 19:14
查看更多