2016-04-19 6 views
0

Ich verwende Watch Connectivity, um eine Nachricht zu empfangen (das in objecC generierte Wörterbuch). Die aufgerufene Delegatfunktion (swift) möchte das empfangene Wörterbuch nicht richtig interpretieren.Ich kann objectForKey nicht erreichen - [String: AnyObject] als Wörterbuch

ObjectForKey ist nicht auf meinem dict gefunden. Was ist der Grund? Dank

func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) { 
     print("\nWC watch:\n Did receive didReceiveMessage: \(message)") 
     var messageDict = message as Dictionary<String, AnyObject> //here I wanted to cast to Dictionary 
     let newState = messageDict.objectForKey(WatchManagerMessageMaskStateKey) //but the messageDict does not know objectForKey 
} 

Antwort

2

[String : AnyObject] und Dictionary<String, AnyObject> sind zwei Bezeichnungen für genau die gleiche Sache.

objectForKey gehört zu NSDictionary, für den nativen Swift-Typenschlüsselabonnement.
Sie könnten das Ergebnis auf etwas Spezifischeres übertragen.

func session(session: WCSession, didReceiveMessage message: [String : AnyObject]) { 
    print("\nWC watch:\n Did receive didReceiveMessage: \(message)") 
    let newState = message[WatchManagerMessageMaskStateKey] 
    ... 
} 
Verwandte Themen