2013-11-20 3 views
1

Я пытаюсь загрузить JSON с NSURLConnection, но если я не заставил приложение приостановить несколько секунд, данные, которые я получаю, не завершены. Это всегда около 2600 байт, и мой ответ должен быть около 70000.didReceiveData не получает все данные

Любая подсказка, почему это происходит?

Спасибо

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response 
{ 
    _responseData = [[NSMutableData alloc] init]; 
    //sleep(10); 
} 
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data 
{ 
    [_responseData appendData:data]; 
    [self getDataJSON: _responseData]; 
} 
+0

ли получать данные будут называть каждый раз, когда данные будут вернуться с сервера. Данные могут поступать в пакеты, поэтому вы можете не получать их полностью. У вас будут полные данные, когда вы выполнили методFinishLoading. У вас должна быть переменная экземпляра и добавлять данные каждый раз, когда doneReceive выполняется. –

ответ

4

didReceiveData называется много раз, в то время как он получает данные

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

} 

Вы должны ждать, пока не закончите прием данных

- (void)connectionDidFinishLoading:(NSURLConnection*)connection 
{ 
    [self getDataJSON: _responseData]; 
} 
+0

Спасибо вам большое! Вы совершенно правы! – Andoxko

+1

Если это ответ, пожалуйста, отметьте его. –

0

Вы можете получить полные данные, когда подключение закончено. NSURLConnection заканчивается, когда вызывается метод делегата connectionDidFinishLoading:. Попробуйте [self getDataJSON: _responseData]; в этом методе. Удачи!

+0

спасибо! Вы совершенно правы также! Извините, что не принял ваш ответ :(Я не могу принять 2 ответа, и он отвечает сначала. – Andoxko

Смежные вопросы