2017-04-22 2 views
-1
let orderID = (responceDictionary as NSDictionary).value(forKeyPath: "result.id") as? String 

Fehler: '[AnyHashable: Any]?' ist nicht umwandelbar in 'NSDictionary'Xcode Swift - Nicht konvertierbar zu NSDictionary

Ich bin nicht ganz sicher, wie aus Any -> NSDictionary zu werfen, aber als String, scheint es Fehler mit dem, was ich versuche zu werfen.

Die oben genannten kompiliert, aber mit dieser wirft einen anderen Fehler: Wird immer fehlschlagen.

Moltin.sharedInstance().cart.order(withParameters: orderParameters, success: { (responceDictionary) in 

     let orderID = (responceDictionary as NSDictionary).value(forKeyPath: "result.id") as? String 
+0

Welche Art von Antwort versuchen Sie hier zu analysieren. Bitte fügen Sie auch die JSON-Struktur hinzu. –

+0

@AdilSoomro Ich habe die Frage hinzugefügt. – Owen26

Antwort

0

[beliebig hashable: any] ist kein NSDictionary. In der zweiten Variante garantierst du es, aber es wird nicht abstürzen.

NSDictionary ignorieren. Wisse, dass es schwer ist, wenn du von Obj-C kommst. Personal habe ich vor kurzem dieses:

let jsonDictionary = try JSONSerialization.jsonObject(with: data, options: JSONSerialization.ReadingOptions.allowFragments) as! Dictionary<String, Any> 
let conversationID = jsonDictionary["conversationId"] as! String? 

ConversationId wird ein optionaler String sein. Casting in ein Objekt oder eine Struktur, wenn Sie es viel verwenden. Spart den Aufwand jedes Mal zu werfen

+0

Wie würden Sie das responceDictionary als Dictionary speichern, damit ich es in der nächsten Funktion verwenden kann, während sichergestellt wird, dass die Antwort als String gespeichert wird? – Owen26

+1

Verwenden von 'as! String? 'Ist seltsam. Warum zu einem optionalen force-Cast? Verwenden Sie 'wie? String ', vorzugsweise mit' if let'. – rmaddy

+0

@rmaddy Ich verwende eine if let-Anweisung unterhalb dieser Zeile. Ich kämpfe immer noch mit dem gleichen Teil, obwohl eine Antwort mir geholfen hat, es zu verstehen. Ich habe keine Lösung gefunden ... – Owen26

Verwandte Themen