我正在尝试从远程通知的userInfo字典中提取徽章值。我阅读了许多文章并找到了解决我的问题的方法,但我非常不满意!所以这是我的数据结构(我删除了无用的行):
但是...我能不能以更性感的方式做到这一点?减少代码行数、if语句、强制类型转换等等?这是一个“代码复杂”的解决方案,用于简单的事情。
谢谢。
{ 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语句、强制类型转换等等?这是一个“代码复杂”的解决方案,用于简单的事情。
谢谢。