2017-05-15 2 views
1

私は、ダウンロードポーズ削除機能を持つダウンロードパーセントで複数のファイルをダウンロードするファイルダウンロードマネージャーを作成したいと思います。ファイルダウンローダーNSURLSessionTaskを使用してダウンロードタスク

私は成功し、複数のファイルをダウンロードするには、コードの下にしようと

...しかし、プログレスバーを追加することができない。ここ enter image description here

enter image description here

for (int i = 0; i < [arr_bookChapter count]; i++) { 
    NSURLSessionTask * downloadTask = [session downloadTaskWithURL: downloadfileUrl completionHandler:^(NSURL * location, NSURLResponse * response, NSError * error) { 
     if (error == nil) { 
      NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response; 

      if ([httpResponse statusCode] == 200) { 

       //download file save here              

       dispatch_queue_t backgroundQueue = dispatch_queue_create("dispatch_queue_#1", 0); 
       dispatch_async(backgroundQueue,^{ 

        dispatch_async(dispatch_get_main_queue(),^{ 
         // NSError *error; 

         //download complete here 

        }); 
       }); 
      } 
     } else { 
      //faile             
     } 

    }]; 
    [downloadTask resume]; 
} 

を助けてください、私はswift codeを得た: 誰かが作成したり、または提供することはできますObjective-Cのソリューション

+0

私の答えを確認してください。 –

答えて

1

簡単に行うことができます。これらのデリゲートをViewContorllerに実装するだけで済みます。

<NSURLSessionDataDelegate, NSURLSessionDelegate, NSURLSessionTaskDelegate> 

そして、あなたは、このコードを実行する必要がありより:

@property (nonatomic, retain) NSMutableData *dataToDownload; 
@property (nonatomic) float downloadSize; 

- (void)viewDidLoad { 
    [super viewDidLoad]; 

    NSURLSessionConfiguration *defaultConfigObject = [NSURLSessionConfiguration defaultSessionConfiguration]; 

    NSURLSession *defaultSession = [NSURLSession sessionWithConfiguration: defaultConfigObject delegate: self delegateQueue: [NSOperationQueue mainQueue]]; 

    NSURL *url = [NSURL URLWithString: @"your url"]; 
    NSURLSessionDataTask *dataTask = [defaultSession dataTaskWithURL: url]; 

    [dataTask resume]; 
} 

- (void)didReceiveMemoryWarning { 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition disposition))completionHandler { 
    completionHandler(NSURLSessionResponseAllow); 

    progressBar.progress=0.0f; 
    _downloadSize=[response expectedContentLength]; 
    _dataToDownload=[[NSMutableData alloc]init]; 
} 

- (void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data { 
    [_dataToDownload appendData:data]; 
    progressBar.progress=[ _dataToDownload length ]/_downloadSize; 
} 
+0

ファイルのループのNSURLSessionTaskは複数のファイルを意味しますか? – iphonemaclover

+0

それは複数のファイルでもうまく動作します –

+0

ループを追加するだけです –

関連する問題