2013-04-30 11 views
7

ein Wörterbuch haben, dass, wenn ich log es zeigt ...NSJSONSerialization Absturz App

{ 
    Date = "2013-04-30 17:17:18 +0000"; 
    Description = Kb; 
    EventID = "92193e58-c04a-4233-9a6c-1332bc056b20"; 
    Title = Keyboard; 
} 

Ich versuche, für eine JSON Webservice wie diese es in NSData zu drehen ...

- (NSData *)JSONRepresentation 
{ 
    NSDictionary *dictionary = [self dictionaryObject]; 

    NSError *jsonError; 

    NSData *JSONData = [NSJSONSerialization dataWithJSONObject:dictionary 
                 options:0 
                 error:&jsonError]; //This is where the error occurs. 

    return JSONData; 
} 

Aber jedes Mal stürzt die App einfach ab.

Das Wörterbuch ist richtig gebildet, die App stürzt einfach bei dieser Zeile ab.

In AppCode ich den Crash-Bericht bekommen ...

EXC_BREAKPOINT (code=EXC_ARM_BREAKPOINT, subcode=0xdefe)) 

In Xcode die App hält nur, und wenn ich es aufhört mit einem Fehler weiterhin versuchen ...

EXC_BAD_ACCESS (code=1, address=0x0) 
+0

Wo zeigt der Debugger, dass er explodiert? –

+3

Können Sie etwas mehr Kontext bereitstellen, z. die umliegenden Linien? Wo wird 'jsonError' erklärt? – Jim

+0

In der Zeile 'NSData * JSONData = [NSJSON ....'. Es bleibt bei dieser Linie stehen. Im Debugger habe ich nach dem Absturz das Wörterbuch ausgedruckt, so dass das Wörterbuch definitiv korrekt ist. – Fogmeister

Antwort

14

Ihre Schlüssel sind ungültige Objekte zum Konvertieren in JSON. From the docs:

Ein Objekt, das zu JSON umgewandelt werden kann folgende Eigenschaften aufweisen müssen:

Das Top-Level-Objekt ist ein NSArray oder NSDictionary. Alle Objekte sind Instanzen von NSString, NSNumber, NSArray, NSDictionary oder NSNull. Alle Wörterbuchschlüssel sind Instanzen von NSString. Zahlen sind nicht NaN oder unendlich.

+1

Vielen Dank. Das NSDate-Objekt verursachte den Absturz. – Fogmeister

+0

Großartig. Ich hatte ein schnelles enum, das ich vergessen hatte, als eine Saite rawValue zu übergeben, die diesen Unfall für mich verursachte. – Undrea