2012-05-22 6 views
0

Я использую класс singleton для извлечения JSON с удаленного сервера (через NSURLConnection) - все кажется прекрасным, если только я не пытаюсь разобрать JSON с помощью JSONKit.JSONKIT Parsing Error

Вот код

-(void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
[apiData appendData:data]; 
} 

-(void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error 
{ 
NSLog(@"Connection failed! Error - %@ %@", 
     [error localizedDescription], 
     [[error userInfo] objectForKey:NSURLErrorFailingURLStringErrorKey]); 
} 

-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
NSHTTPURLResponse *realResponse = (NSHTTPURLResponse *)response; 
if (realResponse.statusCode == 200) 
{ 
    apiData = [[NSMutableData alloc] init]; 
} else { 
    NSLog(@"Bad response = %i",realResponse.statusCode); 
} 
} 

-(void)connectionDidFinishLoading:(NSURLConnection *)connection 
{ 
NSString *jsonData = [[NSString alloc] initWithData:apiData encoding:NSUTF8StringEncoding]; 
NSDictionary *deserializedData = [jsonData objectFromJSONString]; 
[self.delegate dataLoaded:deserializedData]; 
} 

Ошибки я получаю на этой линии

NSDictionary *deserializedData = [jsonData objectFromJSONString]; 

-[__NSCFString objectFromJSONString]: unrecognized selector sent to instance 0x7fc1cd0 

Любые идеи, что здесь происходит? Кажется, это обычный способ разбора JSON с использованием JsonKit.

Я уже убедился, что JSON действительно ... Строка повреждена каким-то образом во время добавления в didReceiveResponse?

+0

Возможный дубликат [objectFromJSONString сбой при запуске приложения, использующего Simperium] (http://stackoverflow.com/questions/10478030/objectfromjsonstring-crash-when-launching-app-that-uses-simperium) –

+0

У меня уже есть - ObjC в других флагах компоновщика –

+2

Выяснил это ... У меня был JSONKIt.h, включенный в проект, но по какой-то странной причине JSONKit.m не был включен в «Источники компиляции» в разделе «Сборка фаз» - как только я добавил он вручную начал работать нормально. –

ответ

8

Понял это ... У меня был JSONKIt.h, включенный в проект, но по какой-то странной причине JSONKit.m не был включен в «Источники компиляции» в разделе «Сборка фаз» - как только я добавил его вручную, он начал работающ отлично.