NSJSONSerialisierung führt zu EXC_BAD_ACCESS

8

Momentan schreibe ich eine App (Target iOS 6, ARC aktiviert), die JSON für die Datenübertragung und Core Data für den persistenten Speicher verwendet. Die JSON-Daten werden aus einer MySQL-Datenbank mit einem PHP-Skript über json_encode generiert.

Mein Problem ist, dass mit Daten aus bestimmten Tabellen der folgende Code fehlschlägt:

%Vor%

Das Programm stürzt immer mit einem EXC_BAD_ACCESS-Fehler in der Zeile ab, in der "self.jsonSerializationResult" steht und "Instruments" sagt, dass ein Zombie gefunden wurde. Ich weiß, dass dies bedeutet, dass ein Objekt, an das ich eine Nachricht sende, gleich Null ist, aber ich kann nicht herausfinden, wie ich es beheben kann ... Das ist was Instrument zu sagen hat:

%Vor%

Mein Programm arbeitet mit jeder JSON-Ausgabe außer dieser:

%Vor%

Ich habe über einen möglichen Fehler nachgedacht, aber keiner scheint der Verantwortliche zu sein:

  • jsonData oder jsonSerializationResult können nil sein: sie sind nicht
  • PHP generierte ungültiges JSON: Mit einem Validator auf
  • überprüft
  • null Werte: kein Problem mit anderen Tabellen

Hat jemand eine Idee?

    
Christian Hennen 11.10.2012, 14:54
quelle

3 Antworten

11

Es sieht aus wie ein Fehler / Fehler mit NSJSONSerialization . Das Problem wird durch die Unicode-Zeichen verursacht ( freie_pl\u00e4tze anstelle von freie_plätze ). Sie haben zwei Möglichkeiten -

  1. Wandeln Sie den Escape-Unicode in echte Unicode-Zeichen um. Versuchen Sie diese SO-Antwort
  2. Verwenden Sie eine andere JSON-Engine, z. B. JSONKit . JSONKit beansprucht auch mehr Leistung als NSJSONSerialization .
user1071136 11.10.2012, 15:43
quelle
4

Ich weiß, dass diese Frage beantwortet wurde, aber ich denke, dass einige Anfänger das gleiche Problem wie ich haben und zu dieser Frage gebracht werden können.

Die Nachricht EXC_BAD_ACCESS wurde von falsch formatiertem JSON verursacht. Da ich versehentlich den gleichen Namen für ein Objekt verwendet habe, was Probleme beim Konvertieren des JSON in ein Wörterbuch verursacht.

Ärgerlich brachte es keinen Formatierungsfehler hervor. Hier ist ein Beispiel für den JSON, der das Problem verursacht hat:

%Vor%

Um das Problem zu beheben, musste ich sicherstellen, dass alle Objekte der gleichen Ebene unterschiedliche Namen hatten.

    
Max 03.12.2012 13:20
quelle
1

Habe gerade NSJSONSerialization getestet. Mit iOS 7.1. Es funktioniert. Kein Problem gefunden. Sieht aus wie Apple das Problem behoben.

%Vor%     
Xiaochen Du 24.04.2014 16:40
quelle