У меня есть следующий бит кода в методе класса
NSDictionary *shopAddresses = [[NSDictionary alloc] initWithContentsOfFile:fileName];
NSMutableArray *shopLocations = [NSMutableArray arrayWithCapacity:shopAddresses.count];
[shopAddresses enumerateKeysAndObjectsWithOptions:NSEnumerationConcurrent usingBlock:^(id key, ShopLocation *shopLocation, BOOL *stop) {
CLGeocoder *geocoder = [[CLGeocoder alloc] init];
[geocoder geocodeAddressString:shopLocation.address completionHandler:^(NSArray *placemarks, NSError *error) {
if (error) {
NSLog(@"Geocode failed with error: %@", error);
}
else {
shopLocation.placemark = [placemarks objectAtIndex:0];
}
[shopLocations addObject:shopLocation];
}];
}
После выполнения этого кода я хочу вернуть массив shopLocations в качестве результата для метода. Однако мне нужно как-то подождать, пока все поиски геокодера не завершатся, если я не хочу, чтобы массив был пустым.
Как я могу это сделать?
Я пробовал разные подходы GCD, но пока не достиг успеха.