2013-04-30 13 views
7

Mam słownika, który po zalogowaniu się to pokazuje ...NSJSONSerialization upaść aplikacja

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

Próbuję przekształcić go w NSData dla usługi internetowej JSON jak to ...

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

Ale za każdym razem, gdy go uruchamiam, aplikacja się zawiesza.

Słownik jest poprawnie uformowany, aplikacja ulega awarii w tym wierszu.

W AppCode otrzymuję raport o awarii ...

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

W Xcode aplikacja po prostu przestanie działać i jeśli próbuję nadal zatrzymuje się z błędem ...

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

Gdzie debugger pokazuje, że wysadza w powietrze? –

+3

Czy możesz podać nieco więcej kontekstu, np. otaczające linie? Gdzie zadeklarowano 'jsonError'? – Jim

+0

W linii 'NSData * JSONData = [NSJSON ....'. Zatrzymuje się na tej linii. W debugerze po awarii wydrukowałem słownik, więc słownik jest zdecydowanie poprawny. – Fogmeister

Odpowiedz

14

Klucze są nieprawidłowe obiekty do konwersji do JSON. From the docs:

obiekt, który może być przekształcony w JSON może mieć następujące właściwości :

Przedmiotem góry poziom jest NSArray lub NSDictionary. Wszystkie obiekty są wystąpienia NSString, NSNumber, NSArray, NSDictionary lub NSNull. Wszystkie klucze słownika są to instancje NSString. Liczby nie są NaN ani nieskończoność.

+1

Dziękuję bardzo. Obiekt NSDate spowodował awarię. – Fogmeister

+0

Świetnie. Miałem szybkie wyliczenie, że zapomniałem przekazać jako ciąg rawValue, który spowodował dla mnie tę awarię. – Undrea

Powiązane problemy