我需要下载一个图像队列。 我首先创建了我的操作,然后使用AFNetworking的“排队”方法添加它们。AFNetworking +在队列中下载图像+取消操作
我有两个问题: 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请求]:无法识别的选择发送到实例0x16f54c70
你好mattt,好吧,你是对的,我现在有一个干净的进度条工作!谢谢。对于2),我真的不知道如何杀死所有的操作。我在我的iPad应用程序中创建了一个同步引擎,它将3或4个不同的URL发送到Rails Web应用程序,有时我需要一个队列来备份和执行操作。我为我的所有操作使用了AFHTTPClient的一个子类。我的目标是在应用程序退出活动时(或者如果用户想要停止同步),终止所有类型的操作或队列。我在维基上看到了你的代码,但我不明白这样做的最好方法(杀死所有操作)。 – 2012-03-01 20:27:35
当应用变为不活动状态时,您可以执行'[httpClient.operationQueue cancelAllOperations]'或'[httpClient.operationQueue suspend]',当它恢复时,可以执行'[httpClient.operationQueue resume]'。 – mattt 2012-03-02 03:47:31
谢谢。我会试试这个。 – 2012-03-02 07:42:45