Ich habe eine array
von Benutzerobjekten. Ich muss über dieses Array iterieren, und dann muss ich für jeden Benutzer eine Anforderung zum Abrufen von Daten basierend auf seiner Benutzer-ID stellen. Diese Anfrage ist eine asynchrone Anfrage (und aus Gründen, die ich nicht synchronisieren kann). Hier ist die bearbeitete Code dispatch_group Anrufe:Gleichzeitigkeit iterieren über NSArray
EDITED
for (User *user in self.userList) {
dispatch_group_enter(self.usersGroup);
[self.wrapper getUserDataWithId:user.userid completion:^(Owner *owner, NSError *error) {
user.owner = owner;
dispatch_group_leave(self.usersGroup);
}];
}
dispatch_group_notify(self.usersGroup, dispatch_get_main_queue(), ^{
// All requests have finished
// Stuff with updated userlist
});
Das Hauptproblem liegt auf der Hand: Wenn erste Anfragen abgeschlossen haben, verweisen die Benutzer es hat, ist nicht derjenige, der die Anfrage gestartet hat, so dass ich habe nicht die richtige Zuordnung.
Gibt es eine einfache und elegante Möglichkeit, dieses Problem zu lösen? Danke im Voraus!
Der Block wird den Wert von 'user' erfassen, so wird der Besitzer auf dem richtigen Objekt eingestellt werden. Wie wartest du, bis alle Anfragen abgeschlossen sind? – Paulw11
Der Block kennt nur eine ID (String), hat aber keinen Verweis auf das Benutzerobjekt. Ich habe versucht, mit dispatch_group, die wartet, bis alle Anforderungen abgeschlossen sind, aber zurückgegebenen Array hat keine korrelativen Daten –
Hinzufügen des Codes, den Sie versucht mit Dispatch-Gruppen würde helfen Menschen helfen Ihnen. – CRD