Я использую Alamofire
для одновременного выполнения нескольких асинхронных запросов и SwiftyJSON
для обработки ответа.Асинхронный запрос (вопросы для заказа)
Мне нужна помощь, убедившись, что добавление к moviesByCategory
происходит в порядке.
Например, «верхний» ответ данных должен быть первым элементом, добавленным к moviesByCategory
, а не «предстоящим».
var moviesByCategory = [[JSON]]()
override func viewDidLoad() {
super.viewDidLoad()
let apiEndPoints = ["top_rated", "popular", "now_playing", "upcoming"]
let dispatchGroup = DispatchGroup()
for endPoint in apiEndPoints {
let endPointURL = URL(string: "https://api.themoviedb.org/3/movie/\(endPoint)?api_key=\(apiKey)&language=en-US&page=1")!
dispatchGroup.enter()
getMoviesFromEndPoint(url: endPointURL)
}
dispatchGroup.notify(queue: DispatchQueue.main) {
self.tableView.reloadData()
}
}
func getMoviesFromEndPoint(url: URL, group: dispatchGroup) {
Alamofire.request(url).responseData { response in
if let data = response.result.value {
let json = JSON(data: data)
self.moviesByCategory.append(json["results"].arrayValue)
}
}
}
Цель для DispatchGroup
является перезагрузить UITableView
, когда все запросы были завершены.
Любая помощь с этим была бы чрезвычайно оценена. Пожалуйста, укажите, где я ошибаюсь.