繁体   English   中英

使用NSOperationQueue跟踪下载

[英]Tracking downloads with NSOperationQueue

我有5个NSOperations的队列。 队列的setMaxConcurrentOperationCount设置为1.每个操作基本上都是调用服务器来下载特定文件。

当文件保存到磁盘时,跟踪一个文件的下载是否已经完成以启动另一个NSOperation的最佳方法是什么? 或者有没有办法让NSOperations了解文件的下载进度?

您应该在NSOperation子类中覆盖isFinished方法,只有在实际完成时才返回YES

你可以简单地继承NSOperation ,把你下载和保存数据到文件系统到代码-main你的方法NSOperation子类,你的操作步骤完成后,在接下来的操作NSOperationQueue将自动开始执行

@implementation MyOperation

- (void) main {
    if ([self isCancelled]) {
        NSLog(@"** operation cancelled **");
    } else {
        NSURL *conUrl = [NSURL URLWithString: urlString];
        NSError *error;
        NSData *conData = [NSData dataWithContentsOfURL: conUrl options: NSDataReadingMappedIfSafe error: & error];
        if (!error) {
            UIImage *image = [
                [UIImage alloc] initWithData: conData];

            NSString *cacheDir = [NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) objectAtIndex: 0];
            NSString *jpgFilePath = [NSString stringWithFormat: @"%@/%@.jpg", cacheDir, textLabel];
            conData = [NSData dataWithData: UIImageJPEGRepresentation(image, 1.0f)];
            [conData writeToFile: jpgFilePath atomically: YES];
        }
    }

    NSLog(@"Operation finished");
}


@end

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM