サーバーから複数のファイルを同時にダウンロードする必要があります。現在、一度に 1 つのビデオをダウンロードしていますが、完全に正常に動作しています。以下は同じコードです。ここで、複数のビデオを同時にダウンロードし、進行中のすべてのダウンロードに対して個別の進行状況バーを維持する必要があります。そして、このコードは大きなビデオのダウンロードで機能しますか、それともより良いアプローチがあります.
ありがとう
//グローバルヘッダー変数
float contentSize;
NSMutableData *responseAsyncData;
UIProgressView *progressBar;
//接続を作成するためのコード
NSString *requestString = [NSMutableString stringWithString:VIDEO_LINK];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:requestString] cachePolicy:NO timeoutInterval:15.0];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:urlRequest delegate:self startImmediately:YES];
そして、このようなコールバックを処理します..
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
if ([response isKindOfClass:[NSHTTPURLResponse class]])
{
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;
contentSize = [httpResponse expectedContentLength];
}
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
if(responseAsyncData==nil)
{
responseAsyncData = [[NSMutableData alloc] initWithLength:0];
}
[responseAsyncData appendData:data];
float progress = (float)[responseAsyncData length] / (float)contentSize;
[progressBar setProgress:progress];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Error: %@", [error localizedDescription]);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection
{
NSError* error;
if(responseAsyncData)
{
//filepath = Path to my location where i am storing
BOOL pass = [responseAsyncData writeToFile:filepath atomically:YES];
if (pass) {
NSLog(@"Saved to file: %@", filepath);
} else {
NSLog(@"Video not saved.");
}
[progressBar setProgress:0];
}
responseAsyncData = nil;
}