Objective-C - ожидание цикла с блоком (NSURLSessionDataTasks) перед продолжением
В поисках правильного способа выполнения цикла в моем коде, где внутри цикла я вызываю метод класса с возвращаемым блоком завершения, обратный вызов которого выполняется, как только я получаю данные обратно с помощью NSURLSessionDataTask(получение данных JSON). Я хочу, чтобы все задачи были выполнены, прежде чем делать что-либо еще в коде.
Код ниже:
for(Category *myObj in myArray){
[AssetRequests resourceLinkForId:myObj.catId returning:^(NSString *pdfLink) {
myObj.linkUrl = pdfLink;
}];
}
//another loop here and other code including return statement. I dont want this to be executed until my loop above is complete.
+(void)resourceLinkForId:(NSString *)myId returning:(void (^)(NSString *))completionBlock{
NSString *urlString = @"whatever"
NSURL *baseURL = [NSURL URLWithString:urlString];
NSURLSessionDataTask *downloadResourcesTask = [[NSURLSession sharedSession] dataTaskWithURL:baseURL completionHandler:^(NSData *data, NSURLResponse *response, NSError * error) {
//check for errors/json errors, etc., parse Json, whatever else.
completionBlock(someString);
}];
[downloadTask resume];
}
Здесь есть такой же быстрый вопрос, где-то говорилось об использовании групп рассылки, но в этом случае он мне не помог бы по какой-то причине. Какой правильный способ решить эту проблему?