(iOS 10, Swift 3) Reading `userInfo` dictionary fr

2019-04-29 00:42发布

Background

I'm trying to load the userInfo dictionary from application:didReceiveRemoteNotification:userInfo:fetchCompletionHandler in my app delegate.

I then need to cast userInfo from [AnyHashable:Any] to [String:NSObject] so I can use it in CloudKit's CKNotification:fromRemoteNotificationDictionary.

Question

When I do:

let ui = userInfo as! [String : NSObject]

I get the error:

'[AnyHashable:Any]' is not convertible to '[String:NSObject]'

Is there a better way to convert userInfo to the appropriate type, or am I on a completely wrong track?

3条回答
Evening l夕情丶
2楼-- · 2019-04-29 01:03
NSString.localizedStringWithFormat("%@",(notification.userInfo as! [String: AnyObject] as! [String : NSObject])["theKeyValue"]!)

This is how I got the string. Feel free to correct it.

查看更多
做自己的国王
3楼-- · 2019-04-29 01:04

You just need to cast it first to NSDictionary and then you can cast it to [String: NSObject].

Try like this:

CKNotification(fromRemoteNotificationDictionary: userInfo as NSDictionary as! [String: NSObject])
查看更多
做个烂人
4楼-- · 2019-04-29 01:07

As suggested, it is enough to take away all casts and use userInfo as such for Swift 3 to handle the thing correctly.

查看更多
登录 后发表回答