Sto cercando di estrarre il valore del badge dal dizionario utenteInfo di una notifica remota. Ho letto molti post e ho trovato una soluzione al mio problema ma non sono assolutamente soddisfatto!Swift: '(NSObject, AnyObject)' non ha un membro denominato 'subscript'
Così qui è la mia struttura dati (ho tolto le linee inutili): { aps = { badge = 7 } }
Per estrarre questo numero '7' fuori dalla mia userInfo
vorrei fare quanto segue:
self.updateAppIcon(userInfo["aps"]["badge"] as? Int)
Ma naturalmente ottengo il seguente errore:
Swift: '(NSObject, ANYOBJECT)' non ha un membro denominato 'pedice'
Se non sbaglio, è perché []
restituisce un oggetto AnyObject che non può essere interpretato come un altro dizionario.
Una soluzione lavoro sarebbe quello di effettuare le seguenti operazioni:
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
}
Ma sul serio ... potrei farlo in un modo più sexy? meno linee, meno se clausole, meno cast, ecc? Questa è una soluzione "complessa come il codice" di una cosa facile.
Grazie
Grazie mille!Non avevo idea di questo "Concatenamento opzionale". Grazie per entrambe la soluzione e il collegamento! –