0
私はAlamofire
を使用して多数の非同期リクエストを同時に実行し、SwiftyJSON
を使用してレスポンスを処理しています。非同期リクエスト(注文事項)
私は、moviesByCategory
への追加が順番に行われるように助けが必要です。
たとえば、「top_rated」データ応答は、「今後」ではなく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
をリロードすることです。
これに関するお手伝いがあれば幸いです。私が間違っている箇所を指摘してください。