首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(iOS 10,Swift 3)从CloudKit通知中读取`userInfo`字典:如何将`[AnyHashable : Any]`转换为`[String : NSObject]`?

(iOS 10,Swift 3)从CloudKit通知中读取`userInfo`字典:如何将`[AnyHashable : Any]`转换为`[String : NSObject]`?
EN

Stack Overflow用户
提问于 2016-08-30 05:02:19
回答 3查看 4.9K关注 0票数 6

背景

我正在尝试在我的应用程序代理中从application:didReceiveRemoteNotification:userInfo:fetchCompletionHandler加载userInfo字典。

然后,我需要将userInfo[AnyHashable:Any]转换为[String:NSObject],这样我就可以在CloudKit的CKNotification:fromRemoteNotificationDictionary中使用它。

问题

当我这样做的时候:

代码语言:javascript
复制
let ui = userInfo as! [String : NSObject]

我得到了错误:

代码语言:javascript
复制
'[AnyHashable:Any]' is not convertible to '[String:NSObject]'

有没有更好的方法将userInfo转换为合适的类型,或者我走在一个完全错误的轨道上?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-08-30 12:59:23

您只需要先将其强制转换为NSDictionary,然后再将其强制转换为[String: NSObject]

试着这样做:

代码语言:javascript
复制
CKNotification(fromRemoteNotificationDictionary: userInfo as NSDictionary as! [String: NSObject])
票数 6
EN

Stack Overflow用户

发布于 2016-11-24 17:19:56

代码语言:javascript
复制
NSString.localizedStringWithFormat("%@",(notification.userInfo as! [String: AnyObject] as! [String : NSObject])["theKeyValue"]!)

我就是这样弄到这根线的。请随时更正它。

票数 0
EN

Stack Overflow用户

发布于 2016-09-05 16:07:24

正如建议的那样,移除所有强制转换并使用userInfo就足以让Swift 3正确地处理这件事。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39215160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档