Swift 3.0:推送通知中对成员 'Subscript' 的模糊引用问题
Swift 3.0 : Ambiguous reference to member 'Subscript' issue in push notification
这是以下代码,但我在 swift3 中遇到以下错误
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
notificationReceived(notification: userInfo as [NSObject : AnyObject])
}
func notificationReceived(notification: [NSObject:AnyObject]) {
let viewController = window?.rootViewController
let view = viewController as? ViewController
view?.addNotification(
title: getAlert(notification: notification).0,
body: getAlert(notification: notification).1)
}
private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) {
let aps = notification["aps"] as? NSDictionary
let alert = aps?["alert"] as? [String:AnyObject]
let title = alert?["title"] as? String
let body = alert?["body"] as? String
return (title ?? "-", body ?? "-")
}
但我收到以下错误“Swift 3.0:在“让 aps = notification["aps"] as?NSDictionary"
类型转换
将 userInfo 从 NSDictionary 更改为 [String : Any]。并尝试一次
let aps = notification["aps"] as? [String : Any]
或像这样写
let aps = notification["aps" as NSString] as? [String:Any]
字符串无法转换为 NSObject
,只需将所有 [NSObject:AnyObject]
重命名为 [String:Any]
并使用 Swift 3
这是以下代码,但我在 swift3 中遇到以下错误
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) {
notificationReceived(notification: userInfo as [NSObject : AnyObject])
}
func notificationReceived(notification: [NSObject:AnyObject]) {
let viewController = window?.rootViewController
let view = viewController as? ViewController
view?.addNotification(
title: getAlert(notification: notification).0,
body: getAlert(notification: notification).1)
}
private func getAlert(notification: [NSObject:AnyObject]) -> (String, String) {
let aps = notification["aps"] as? NSDictionary
let alert = aps?["alert"] as? [String:AnyObject]
let title = alert?["title"] as? String
let body = alert?["body"] as? String
return (title ?? "-", body ?? "-")
}
但我收到以下错误“Swift 3.0:在“让 aps = notification["aps"] as?NSDictionary"
类型转换
将 userInfo 从 NSDictionary 更改为 [String : Any]。并尝试一次
let aps = notification["aps"] as? [String : Any]
或像这样写
let aps = notification["aps" as NSString] as? [String:Any]
字符串无法转换为 NSObject
,只需将所有 [NSObject:AnyObject]
重命名为 [String:Any]
并使用 Swift 3