Swift: '(NSObject, AnyObject)' hat kein Mitglied namens 'subscript'

Ich versuche, den Ausweiswert aus dem userInfo-Wörterbuch einer Remote-Benachrichtigung zu extrahieren. Ich habe viele Beiträge gelesen und eine Lösung für mein Problem gefunden, aber ich bin sehr unzufrieden!

Also hier ist meine Datenstruktur (ich habe die nutzlosen Zeilen entfernt):{ aps = { badge = 7 } }

Um diese Zahl '7' aus meinem @ zu extrahieruserInfo Ich würde gerne folgendes machen:

self.updateAppIcon(userInfo["aps"]["badge"] as? Int)

Aber natürlich bekomme ich den folgenden Fehler:

Swift: '(NSObject, AnyObject)' hat kein Mitglied namens 'subscript'

Wenn ich mich nicht irre, ist es, weil[] gibt ein AnyObject zurück, das nicht als ein anderes Wörterbuch interpretiert werden kann.

A working solution würde folgendermaßen aussehen:

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
}

Aber im Ernst ... könnte ich es auf eine sexy Art tun? weniger Zeilen, weniger If-Klauseln, weniger Casts usw.? Dies ist eine solche "Code-komplexe" Lösung von einer einfachen Sache.

Vielen Dan

Antworten auf die Frage(2)

Ihre Antwort auf die Frage