Ich verwende Alamofire
, um eine Anzahl von asynchronen Anfragen gleichzeitig auszuführen, und SwiftyJSON
, um die Antwort zu behandeln.Asynchrone Anfrage (Bestellung wichtig)
Ich brauche Hilfe, um sicher zu stellen, dass das Anfügen an moviesByCategory
in der Reihenfolge auftritt.
Zum Beispiel sollte die Datenantwort "top_rated" das erste an moviesByCategory
angehängte Element sein, nicht "anstehend".
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)
}
}
}
Der Zweck DispatchGroup
ist die UITableView
neu zu laden, sobald alle Anforderungen abgeschlossen haben.
Jede Hilfe mit diesem würde sehr geschätzt werden. Bitte weisen Sie darauf hin, wo ich falsch liege.