我需要下载一个图像队列。 我首先创建了我的操作,然后使用AFNetworking的“enqueue”方法添加它们。
我有两个问题: 1)我没有为队列工作的进度条(我让它使用自定义操作队列) 2)当我想要
时,我没有找到停止队列的解决方案我创建了第一批批处理操作并在数组中添加主题:
while ((dict = [enumerator nextObject]))
{
NSMutableURLRequest *request = [[MyHTTPClient sharedClient] requestWithMethod:@"GET" path:@"ws/webapp/services/pull_image" parameters:dict];
AFImageRequestOperation *operation = [AFImageRequestOperation imageRequestOperationWithRequest:request
imageProcessingBlock:nil cacheName:nil
success:^(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image)
{
NSLog(@"image : %@", [image description]);
// process images
}
failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error)
{
// manage errors
}];
[operations addObject:operation];
}
然后,我将操作排入队列:
[[MyHTTPClient sharedClient] enqueueBatchOfHTTPRequestOperations:operations
progressBlock:^(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations)
{
float percentDone = ((float)((int)numberOfCompletedOperations) / (float)((int)totalNumberOfOperations));
[delegate syncServicesController:self updateProgressView:percentDone];
}
completionBlock:^(NSArray *operations)
{
//
}];
因此,进度下载不起作用。 但我可以看到numberOfCompletedOperations的进展......? 1,2,3,4,5 ...我是否需要在主线程中强制刷新进度视图?
当我试图停止网络任务时:
- (void)cancelAllRequests
{
[[MyHTTPClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:@"ws/webapp/services/pull_image"];
}
我不明白如何停止请求队列......这似乎有效,但我有这个错误: - [NSBlockOperation request]:无法识别的选择器发送到实例0x16f54c70
答案 0 :(得分:4)
这些实际上只是在最后一两天修复:)
继续并更新到master的最新版本,其中包括以下内容:
cc2115e469:进度块现在默认发送到main,就像AFNetworking中的所有其他完成块一样。这应该可以修复UI周围没有更新的任何问题。
cac44aeb34:修复了NSBlockOperation
发送request
时遇到的问题。在cancelAllHTTPOperationsWithMethod:
中有一个错误的假设,即所有操作都是AFHTTPRequestOperation
。唯一的缺点是它不会处理您的批量操作。为此,您始终可以遍历httpClient.operationQueue.operations
并选择您想要的那个。