【问题标题】:How to use NSOperationQueue to download audio files from server one by one如何使用 NSOperationQueue 从服务器上一一下载音频文件
【发布时间】:2013-05-23 12:36:33
【问题描述】:
我有一个包含音频文件 url 的数组。我想在后台模式下使用这些 url 从服务器获取音频文件。我听说我可以使用 NSOperationQueue 来实现这一点。我的查询是
1)我怎样才能做到这一点。
2)如何在单个操作完成/失败时获得回调
3) 整个流程完成后如何回电。
我需要这些回调来跟踪下载过程,以便我可以更新有关文件下载状态的数据库。所以,万一互联网连接中断,我可以再次下载剩余文件。
任何想法都会有所帮助,因为我是 NSOperationQueue 的新手。
【问题讨论】:
标签:
iphone
ios
objective-c
nsoperation
nsoperationqueue
【解决方案1】:
NSOperationQueue *queue = [NSOperationQueue new];
NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(download:) object:aAudio];
[queue addOperation:operation];//added code
[operation release];
现在在方法download 中做你想做的事情。按照doc 设置[queue setMaxConcurrentOperationCount:1] 为一一。
【讨论】:
-
对不起,我的回复晚了,但我是在 ASIHTTPRequest 库的帮助下完成的。易于实施并为我提供我想要的任何东西。但后来我发现它已被弃用。所以用谷歌搜索并找到了一些有用的库来实现这一点。 Michał Ciuba 在上面的 cmets 中提到了其中之一。以下可用于此类操作 1) AFNetworking 2) LRResty 3) RestKit 4) AWS SDK for iOS 5) ShareKit 6) NSURLRequest/NSURLConnection 更多详情link
【解决方案2】:
似乎AFNetworking 拥有您所需要的一切(成功/失败的回调块,将请求放入 NSOperationQueue)。在您的情况下,AFHttpClient 及其 enqueueHTTPRequestOperation 方法可能会完成这项工作。