Ваш код не может работать.
Вы должны разделить две задачи и использовать DispatchGroup
для получения уведомлений о завершении сетевых запросов во второй задаче.
Сначала создайте функциюДля основной задачи с обработчиком завершения я пропустил большую часть кода, чтобы показать рабочий процесс
func getMainData(completion: @escaping(Blog)->Void) {
...
URLSession.shared.dataTask(with: dataURL) { (data, response, err) in
...
completion(blog)
}
}
Вызов функции и выполнение сетевых запросов в зависимости от основных данных в обработчике завершения
getMainData() { blog in
let group = DispatchGroup()
for article in blog.articles {
...
group.enter()
// create newDataURL from article
URLSession.shared.dataTask(with: newDataURL) { (data, response, err) in
...
for something in dataFromStation.qwerty {
print("- \(something.empty_slots)")
print(" .... "
}
group.leave()
}
}
group.notify(queue: DispatchQueue.main) {
print("finished")
}
}
Однако я рекомендую загружать (только) основные данные в контроллер основного вида и данные для выбранного местоположения по запросу в контроллер подробного просмотра.