2016-09-09 4 views
2

Я загружаю кучу файлов через запросы Alamofire. Я хочу показать «загрузчик ...» spinner (MBProgressHUD) во время загрузки.Дождитесь завершения нескольких запросов Alamofire до продолжения?

Но у меня возникли проблемы с определением, когда все запросы завершены, чтобы я мог скрыть HUD в нужное время!

До сих пор все, что я пробовал, привело к тому, что хад скрывался слишком рано или никогда вообще не был. В настоящее время у меня есть мои запросы, завернутые в подкласс NSOperation, с простым NSBlockOperation, чтобы скрыть хад, который имеет все операции запроса Alamofire в качестве зависимостей. Но я не могу понять, как заставить запросы быть отмеченными как готовые в нужное время.

В идеале я бы хотел найти решение, которое проще, чем это. Какой был бы лучший способ сделать это? Благодарю.

ответ

2

использование disptach_group_t Вот пример

dispatch_group_t group = dispatch_group_create(); 

__weak MainViewControllerSupplier * weakSelf = self; 
dispatch_group_enter(group); 
[self showHUD]; 
[[DataManager sharedManager] getCategoriesWithSuccessBlock:^(NSArray *categories) { 
    weakSelf.arrCategories = categories; 
    dispatch_group_leave(group); 

    // NSLog(@"response category= %@",categories); 
} failureBlock:^(NSError *error) { 
    NSLog(@"response category = %@",error); 
    dispatch_group_leave(group); 
}]; 

dispatch_group_enter(group); 
[[DataManager sharedManager] getRegionsWithSuccessBlock:^(NSArray *regions) { 
    weakSelf.arrRegions = regions; 
    dispatch_group_leave(group); 
} failureBlock:^(id error) { 
    NSLog(@"response region = %@",error); 
    dispatch_group_leave(group); 

}]; 

dispatch_group_notify(group, dispatch_get_main_queue(), ^{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [self hideHUD]; 
    }); 
    // All task completed 

}); 
Смежные вопросы