【发布时间】:2014-12-17 22:30:32
【问题描述】:
我正在尝试从远程通知的 userInfo 字典中提取徽章值。 我阅读了很多帖子并找到了解决问题的方法,但我非常不满意!
这是我的数据结构(我删除了无用的行):{ aps = { badge = 7 } }
要从我的userInfo 中提取这个数字“7”,我想执行以下操作:
self.updateAppIcon(userInfo["aps"]["badge"] as? Int)
但我当然会收到以下错误:
Swift : '(NSObject, AnyObject)' 没有名为 'subscript' 的成员
如果我没记错的话,那是因为[] 返回的 AnyObject 不能被解释为另一个字典。
可行的解决方案将是执行以下操作:
func handleRemoteNotifiation(userInfo: [NSObject : AnyObject]) {
if let aps: AnyObject = userInfo["aps"] {
if let apsDict = aps as? [String : AnyObject]{
if let badge: AnyObject = apsDict["badge"] {
self.updateAppIconBadgeNumber(badge as? Int)
}
}
}
}
func updateAppIconBadgeNumber(number: Int?) {
// do stuff here
}
但是说真的……我可以用更性感的方式来做吗?更少的行、更少的 if 子句、更少的强制转换等?这是一个简单的事情的“代码复杂”解决方案。
谢谢
【问题讨论】:
标签: ios dictionary swift push-notification nsobject