2017-04-26 3 views
1

Ich habe den folgenden Code unten (Beispielcode), die eine API GET-Anfrage mehrmals sendet.iOS/AFNetworking 3.0: Mehrere Anfragen in der Reihenfolge

- (void)listOfPeople:(NSArray *)array { 
      for (int i = 0; i < array.count; i++) { 
       Person *person = [array objectAtIndex:i]; 

       [personClient getPersonData:person.fullName onSuccess:^(id result) { 
        // change data here 

       } onFailure:^(NSError *error) { 

       }]; 
      } 
     } 

Der Code funktioniert nicht sehr gut, da die API-Anforderungen in einer anderen Reihenfolge endet jedes Mal. Ich muss jede API-Anfrage in der Reihenfolge ausfüllen. Ich glaube, ich muss warten, bis der Abschlussblock oder der Fehlerblock beendet ist, bevor ich die for-Schleife fortsetze. Kann mir jemand in die richtige Richtung zeigen, wenn es keinen besseren Weg gibt, diese Aufgabe zu erfüllen? Ich habe die Versandgruppe ausprobiert, aber sie hat nicht jede Anfrage in der richtigen Reihenfolge erledigt.

+0

Warum interessieren Sie sich in welcher Reihenfolge in sie ankommen? Füllen Sie einfach jeden Teil der Benutzeroberfläche (oder was auch immer) mit jeder Antwort in der Reihenfolge, in der sie ankommen, und verwenden Sie den Wert von "i", um zu bestimmen, welches UI-Element aktualisiert werden soll. – dgatwood

Antwort

0

Entfernen Sie die for-Schleife, und erstellen Sie stattdessen eine rekursive Funktion, die sich vom Beendigungshandler aufruft, um die nächste Person abzurufen. Auf diese Weise wird bei jedem Anruf der Anruf getätigt, um den nächsten Anruf zu erhalten.

Etwas wie folgt aus:

- (void)getPersonFromArray:(NSArray *)array atIdx:(NSInteger)idx { 
    if (idx < array.count) 
    { 
     Person *person = [array objectAtIndex:idx]; 
     [personClient getPersonData:person.fullName onSuccess:^(id result)  
      { 
       // Do something useful with Person here... 
       // ... 
       [self getPersonFromArray:array atIdx(idx + 1)]; 
      } onFailure:^(NSError *error) { 
       // Handle errors here 
       // ... 
      }]; 
    } 
} 
+0

Danke. Bin dankbar. – Weakman10122

Verwandte Themen