我有一个 5 队列NSOperations
。队列setMaxConcurrentOperationCount
设置为 1。每个操作基本上都是对服务器的调用以下载特定文件。
如果一个文件的下载完成以NSOperation
仅在文件保存到磁盘时开始另一个文件,那么跟踪的最佳方法是什么?或者有没有办法NSOperations
知道文件的下载进度?
我有一个 5 队列NSOperations
。队列setMaxConcurrentOperationCount
设置为 1。每个操作基本上都是对服务器的调用以下载特定文件。
如果一个文件的下载完成以NSOperation
仅在文件保存到磁盘时开始另一个文件,那么跟踪的最佳方法是什么?或者有没有办法NSOperations
知道文件的下载进度?
您应该覆盖子类中isFinished
的方法以仅在它实际完成时NSOperation
返回。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