Отмена пакетного запроса в AFNetworking
Итак, у меня есть пакетный запрос, который представляет собой следующий код:
[[AHClient sharedClient] enqueueBatchOfHTTPRequestOperationsWithRequests:requestArray progressBlock:^(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations) {
} completionBlock:^(NSArray * operations){
dispatch_async(dispatch_get_main_queue(), ^(void){
//update the UI
});
}];
Я попытался отменить запрос, сохранив путь URL в массиве и сделать следующее:
for (NSString * urlPath in self.currentRequestArray_){
[[AHClient sharedClient] cancelAllHTTPOperationsWithMethod:@"GET" path:urlPath];
}
но кажется, что он все еще идет в завершенный блок, то есть: обновляет пользовательский интерфейс. Мысли или предложения?
1 ответ
Решение
В блоке пакетного завершения убедитесь, что операции компонента не отменены, и выполняйте действие только в случае успешного завершения какой-либо из них.
завершениеБлок:^(операции NSArray *){ if ([[Операции FilterArrayUsingPredicate:[NSPredicate ultimateateWithFormat:@"isCancelled == NO"]] count] > 0) { dispatch_async(dispatch_get_main_queue(), ^(void){ // обновляем интерфейс }); } }