Swift : '(NSObject, AnyObject) " verfügt nicht über einen member mit dem Namen 'Tiefgestellt'

Ich versuche zu extrahieren, die Abzeichen Wert aus der userInfo-Wörterbuch ein remote-Benachrichtigung.
Ich lese viele post und finden eine Lösung meines Problems, aber ich bin nicht sehr zufrieden!

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

Extrahieren, diese Zahl '7' out of my userInfo ich möchte Folgendes tun:

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

Aber natürlich bekomme ich die folgende Fehlermeldung :

Swift : '(NSObject, AnyObject) " verfügt nicht über einen member mit dem Namen 'Tiefgestellt'

Wenn ich mich nicht Irre, ist es, weil [] gibt ein AnyObject, die nicht interpretiert werden kann als ein anderes Wörterbuch.

Einen funktionierende Lösung wäre Folgendes zu tun:

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 in ein mehr sexy ist Weg ? weniger Linien, weniger, wenn die Klauseln, weniger Stationen, etc? Dies ist so ein "code-Komplex" - Lösung, die eine einfache Sache.

Dank

InformationsquelleAutor Kevin Delord | 2014-10-22
Schreibe einen Kommentar