Создайте две переменные в классе для хранения длины загруженных в настоящее время данных и ожидаемой длины данных (вы могли бы сделать более элегантно)
int downloadedLength;
int expectedLength;
Чтобы узнать длину ожидаемых данных, вы должны получитьэто от didReceiveResponse делегата
-(void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
// NSLog(@"expected: %lld",response.expectedContentLength);
expectedLength = response.expectedContentLength;
downloadedLength = 0;
}
, чтобы обновить загруженную длину, вы должны увеличить его в didReceiveData:
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
downloadedLength = downloadedLength + [data length];
//...some code
}
, тогда можно сделать любую логику для сравнения, если загруженные данные соответствуют вашимтребования в connectionDidFinishLoading
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
if (downloadedLength == expectedLength) {
NSLog(@"correctly downloaded");
}
else{
NSLog(@"sizes don't match");
return;
}
}
Я должен был сделать это, чтобы исправить проблемы библиотеки HJCache с большими изображениями, которые были загружены не полностью (в HJMOHandler).