SBJson и NSData - PullRequest
       3

SBJson и NSData

0 голосов
/ 16 июля 2011

Я получаю данные с quizlet.com, и все работает нормально для простого кода:

-(void) grabbQuizletWithUrl:(NSURL*)requstURL {

     NSString *dataString = [NSString stringWithContentsOfURL:requestURL encoding:NSUTF8StringEncoding error:&error]; 

     NSDictionary *dict = [dataString JSONValue];
}

Но мне нужно использовать NSURLConnection для запуска и остановки индикатора активности. Я пытаюсь

-(void) grabbQuizletWithUrl:(NSURL*)requstURL {

    NSURLRequest *quizletRequest = [[NSURLRequest alloc] initWithURL:requestURL];
    NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:quizletRequest
                                                          delegate:self];
    [connection release];
    [quizletRequest release];

}

// and getting data in delegate method:



- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

    [self.activityIndicator stopAnimating];

    NSString *dataString = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    NSDictionary *dict = [dataString JSONValue];

}

Я получаю сообщения, подобные этим:

[2377: 707] -JSONValue не удалось. Ошибка: неожиданный конец ввода

[2377: 707] -JSONValue не удалось. Ошибка: Неверный запуск токена [.]

[2377: 707] -JSONValue не удалось. Ошибка: Неверный запуск токена [d]

1 Ответ

3 голосов
/ 16 июля 2011

В - (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data; вы должны просто добавить полученные данные к ранее сохраненным, поскольку вы получили только часть ответа, т.е.1005 * Вы должны обработать данные.

-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
    // the connection finished loading all data, process...
    [self.activityIndicator stopAnimating];
    NSString *dataString = [[NSString alloc] 
                            initWithData:someNSMutableDataIVar
                                encoding:NSUTF8StringEncoding];
    NSDictionary *dict = [dataString JSONValue];
}

Асинхронная система загрузки URL подробно описана в Руководстве по программированию системы загрузки URL от Apple.

Надеюсь, это поможет!

...