Swift: Wie rm Alamofire get-Anfrage nacheinander in Schleife
Ich bin ein Anfänger in swift und ich haben einen Fall, wo ich zu laufen AlamoFire GET-request in einer Schleife. Aber soweit ich weiß , die Alamofire Get-Anforderung ist ein Asynchroner Aufruf und den Aufruf in der Schleife, erstellen Sie eine Anzahl von threads.
Voraussetzung ist :
- Ich habe ein array von URLs
-
Dem array zu Durchlaufen in einer Schleife
-
URL zu jedem index aufgerufen werden, durch AlamoFire GET-Anforderung
-
Die empfangenen Daten durch die Anfrage Hinzugefügt werden, um ein array von
Daten -
Nachdem die letzten Daten in das array ein
CollectionView.neu laden call aufgerufen werden soll
Pseudo-code ist wie folgt:
for bookmarkURL in bookmarks
Alamofire.request(.GET, bookmarkURL ).responseJSON
{ response in switch response.result {
case .Success(let JSON):
x[i] = JSON as! [String : AnyObject] //saving data
case .Failure(let error):
print("the error for \(self.bookmarkURL) is \(error) ")
}
i++
if i == bookmarks.count{
collectionView.reload()
break}
}
kann mir jemand sagen, wie sollte ich tun, es in der Folge?
bookmarks
array als Klasse Eigenschaft.index
zum speichern von index-Wert (Int
) beim überqueren derbookmarks
arrayHier ist der code:
In diesem Weg Ihre Anfrage wird nur gemacht werden, wenn der Vorherige abgeschlossen ist, so dass es nacheinander, statt parallel, und Sie können auch laden Sie die collectionView erst, nachdem die Letzte Anforderung beendet ist.
Wenn Sie möchten, laden Sie Ihre Sammlung Ansicht nur nach Erhalt der gesamten Daten, die Sie verwenden können
dispatch_group
wie,Vollständigen code
Hinweis: wenn Sie Ihre Lesezeichen-array ist zu groß, besser, es nicht zu tun in einer Schleife.
Dafür können Sie folgenden code
– Und call –
self.loadBookmarkAtIndex(0)
aus, wo Sie initiieren, der die Daten abrufen.Denke ich, sollten Sie reload Element der Kollektion anzeigen jedes mal, wenn Sie erhalten die Antwort vom sever bezüglich der erhaltenen Antwort.
Hier ist die Lösung:
Hoffe obigen code wird Ihnen helfen.