0

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

如果一个文件的下载完成以NSOperation 在文件保存到磁盘时开始另一个文件,那么跟踪的最佳方法是什么?或者有没有办法NSOperations知道文件的下载进度?

4

2 回答 2

1

您应该覆盖子类中isFinished的方法以仅在它实际完成时NSOperation返回。YES

于 2012-12-18T14:50:15.680 回答
1

您可以简单地继承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
于 2012-12-18T15:01:28.337 回答