2013-04-30 25 views
7

Ho un dizionario che quando accedo si vede ...NSJSONSerialization crash app

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

sto cercando di trasformarlo in NSData per un servizio web JSON come questo ...

- (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; 
} 

Ma ogni volta che lo eseguo l'app si blocca.

Il dizionario è formato correttamente, l'app si arresta appena in questa linea.

In AppCode ottengo il crash report ...

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

in Xcode l'applicazione appena si ferma e se provo a continuare si ferma con un errore ...

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

Da dove viene mostrato il debugger? –

+3

Puoi fornire un po 'più di contesto, ad es. le linee circostanti? Dove è dichiarato 'jsonError'? – Jim

+0

Sulla riga 'NSData * JSONData = [NSJSON ....'. Si ferma su quella linea. Nel debugger dopo l'arresto ho stampato il dizionario, quindi il dizionario è sicuramente corretto. – Fogmeister

risposta

14

Le chiavi sono oggetti non validi per la conversione in JSON. From the docs:

Un oggetto che può essere convertito in JSON deve avere le seguenti proprietà :

L'oggetto di livello superiore è un NSArray o NSDictionary. Tutti gli oggetti sono istanze di NSString, NSNumber, NSArray, NSDictionary o NSNull. Tutte le chiavi del dizionario sono istanze di NSString. I numeri non sono NaN o infinito.

+1

Grazie mille. L'oggetto NSDate stava causando l'arresto anomalo. – Fogmeister

+0

Grande. Ho avuto una enumerazione rapida che ho dimenticato di passare come stringa rawValue che ha causato questo crash per me. – Undrea

Problemi correlati