Ich versuche, ein Wörterbuch aus Daten zu erstellen, die auf einem Server gespeichert sind. Ich erhalte die Daten, aber ich kann die Daten nicht in NSDictionary
konvertieren. Ich glaube, dass sie in einem NSData
-Objekt
Diese Codezeile ist diejenige, die mir das Problem gibt, es wirft ein BAD_EXEC_INSTRUCTION
.
MEINE Frage: Wie kann ich ein JSON
in ein NSDictionary
verwandeln?
Ihr Code führt keine Fehlerbehandlung durch. Aber es kann (und wenn diese Daten von einem Webdienst stammen, wird) auf mehrere Arten fehlschlagen.
Sie sollten die Swift-bedingte Besetzung und die optionalen Bindefunktionen verwenden.
Die optionale Bindung if let JSONData = JSONData
überprüft, dass JSONData nicht null ist. Der von Ihnen verwendete Befehl "unwrap" ( JSONData!
) stürzt möglicherweise ab, wenn keine Daten empfangen werden konnten.
Die optionale Bindung if let json = NSJSONSerialization.JSONObjectWithData
überprüft, ob die Daten in ein JSON-Objekt konvertiert werden können. Die bedingte Umwandlung as? NSDictionary
überprüft, ob das JSON-Objekt tatsächlich ein Wörterbuch ist. Sie verwenden diese Prüfungen derzeit nicht, sondern Sie werfen die Objekte als NSDictionary ab. Welches wird abstürzen, wenn das Objekt nicht gültig json, oder wenn es kein Wörterbuch ist.
Ich würde so etwas empfehlen:
%Vor%Sie könnten die Prüfungen 2 und 3 in eine Zeile zusammenführen und prüfen, ob NSJSONSerialization direkt ein NSDictionary erstellen kann:
%Vor% Stellen Sie sicher, dass fatalError
durch eine entsprechende Fehlerbehandlung in Ihrem Produktionscode ersetzt wird