NSURLSessionDataTask
データのダウンロードに使用しています。接続が中断されたにもかかわらず、データを受信しているケースが見られます。こういった場合はどのように対処すればよいのでしょうか?
- 何らかのエラーが発生することは保証されていますか?
- データ長と応答を比較する必要があり
expectedContentLength
ますか? 信頼できますか?利用できない場合はどうなりますか? - 他の何か?
コード:
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error)
{
if (error)
{
NSLog(@"Request %@ failed with error %@", url, error);
return;
}
const long long expectedContentLength = response.expectedContentLength;
if (expectedContentLength > -1)
{
const NSUInteger dataLength = data.length;
if (dataLength < expectedContentLength)
{
NSLog(@"Request %@ received %ld out of %ld bytes", url, (long)dataLength, (long)expectedContentLength);
return;
}
}
else
{
// How do I know if data is complete?
}
}];
[task resume];