Я пытаюсь извлечь значение значка из словаря userInfo удаленного уведомления. Я прочитал много сообщений и нашел решение моей проблемы, но я очень недоволен!Swift: '(NSObject, AnyObject)' не имеет члена с именем 'subscript'
Так вот моя структура данных (я удалил ненужные строки): { aps = { badge = 7 } }
Чтобы извлечь этот номер «7» из моего userInfo
я хотел бы сделать следующее:
self.updateAppIcon(userInfo["aps"]["badge"] as? Int)
Но Конечно, я получаю следующее сообщение об ошибке:
Swift: «(NSObject, AnyObject)» не имеет член с именем «подстрочный»
Если я не ошибаюсь, это потому, что []
возвращает 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
}
Но серьезно ... я мог сделать это в более сексуально? меньше строк, меньше, если клаузулы, меньше бросков и т. д.? Это такое «кодовое комплексное» решение простой вещи.
Благодаря
Большое спасибо!Я не имел понятия об этом «Необязательном цепочке». Спасибо за ваше решение и ссылку! –