gpt4 book ai didi

iphone - 使用 NSOperationQueue 跟踪下载

转载 作者:行者123 更新时间:2023-11-28 22:43:06 24 4
gpt4 key购买 nike

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

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

最佳答案

您可以简单地将 NSOperation 子类化,并将用于下载和保存数据到文件系统的代码放入 NSOperation 子类的 -main 方法中并且在你的操作完成后,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

关于iphone - 使用 NSOperationQueue 跟踪下载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13935215/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com