问题
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?
回答1:
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])
回答2:
NSString.localizedStringWithFormat("%@",(notification.userInfo as! [String: AnyObject] as! [String : NSObject])["theKeyValue"]!)
This is how I got the string. Feel free to correct it.
回答3:
As suggested, it is enough to take away all casts and use userInfo as such for Swift 3 to handle the thing correctly.
来源:https://stackoverflow.com/questions/39215160/ios-10-swift-3-reading-userinfo-dictionary-from-a-cloudkit-notification-ho