0

私のアプリでは、PDF をデバイスにダウンロードできます。ただし、PDF のダウンロード中は、ダウンロードが完了するまでアプリは何もできません。ダウンロードの進行中に他のアクションを処理できるようにするにはどうすればよいですか? これは、これまでにダウンロードしたものです。

RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
             NSString *urlString = entry.articlePDF;
             NSURL *url = [NSURL URLWithString:urlString];

             NSData *data = [NSData dataWithContentsOfURL:url];

             NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
             NSString *filename = [entry.articleTitle stringByAppendingString:@".pdf"];
             NSString *removed = [filename stringByReplacingOccurrencesOfString:@"/" withString:@""];
             NSString *documentsDirectory = [paths objectAtIndex:0];

             NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent: removed];
             NSLog(@"Downloadstarted%@", pdfPath);
             [data writeToFile:pdfPath atomically:YES];
4

2 に答える 2

0

次のように、バックグラウンド スレッドで実行する必要があります。

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{

RSSEntry *entry = [_allEntries objectAtIndex:indexPath.row];
         NSString *urlString = entry.articlePDF;
         NSURL *url = [NSURL URLWithString:urlString];

         NSData *data = [NSData dataWithContentsOfURL:url];

         NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
         NSString *filename = [entry.articleTitle stringByAppendingString:@".pdf"];
         NSString *removed = [filename stringByReplacingOccurrencesOfString:@"/" withString:@""];
         NSString *documentsDirectory = [paths objectAtIndex:0];

         NSString *pdfPath = [documentsDirectory stringByAppendingPathComponent: removed];
         NSLog(@"Downloadstarted%@", pdfPath);
         [data writeToFile:pdfPath atomically:YES];
    })
于 2013-06-27T05:22:42.797 に答える
-1

ダウンロードに ASIHTTPRequest を使用する

self.request = [ASIHTTPRequest requestWithURL:pdflinkURL];
[self.request setDidFinishSelector:@selector(requestedPDFFinished:)];
[self.request setDidFailSelector:@selector(requestedPDFFailed:)];
[self.request setShouldContinueWhenAppEntersBackground:YES];
self.request.delegate = self;
[self.request setDownloadProgressDelegate:self];
[self.request startAsynchronous];

- (void)requestedPDFFinished:(ASIHTTPRequest *)req
{
    NSData *recievedData = [req responseData];
    // Save top Document Directory
}
//sagar change
- (void)requestedPDFFailed:(ASIHTTPRequest *)req
{
    NSLog(@"%@",req.error);
}
于 2013-06-27T06:07:17.257 に答える