こんな感じで HTTPヘッダに Range を指定すればいい。
NSString *requestRange = [NSString stringWithFormat:@"bytes=%d-", downloadedBytes];
[req setValue:requestRange forHTTPHeaderField:@"Range"];レスポンスは 206(Partial Content)が返る。ヘッダを見てどの部分のデータが戻ってきたかを判断する。以下、抜粋を転載。
switch (httpResponse.statusCode) {
case 206: {
NSString *range = [httpResponse.allHeaderFields valueForKey:@"Content-Range"];
NSError *error = nil;
NSRegularExpression *regex = nil;
// Check to see if the server returned a valid byte-range
regex = [NSRegularExpression
regularExpressionWithPattern:@"bytes (\\d+)-\\d+/\\d+"
options:NSRegularExpressionCaseInsensitive
error:&error];
NSTextCheckingResult *match =
[regex firstMatchInString:range
options:NSMatchingAnchored
range:NSMakeRange(0, range.length)];
if (match.numberOfRanges < 2) {
[fh truncateFileAtOffset:0];
break;
}
NSString *byteStr = [range substringWithRange:[match rangeAtIndex:1]];
NSInteger bytes = [byteStr integerValue];


