J'utilise cette méthode Afnetworking pour démarrer plusieurs demandes à la fois:
- (void)enqueueBatchOfHTTPRequestOperations:(NSArray *)operations progressBlock:(void (^)(NSUInteger numberOfCompletedOperations, NSUInteger totalNumberOfOperations))progressBlock completionBlock:(void (^)(NSArray *operations))completionBlock
3 Réponses :
Si c'est possible, la solution la plus simple peut être simplement pour déplacer votre code de traitement du bloc de réussite de chaque opération au bloc d'achèvement de l'ensemble du lot.
Vous avez le Vous avez également l'adresse URL pour chaque opération disponible via l'opération NSARRAY * Opérations CODE> Disponible dans le bloc d'achèvement, vous pouvez itération via les opérations et rechercher: p>
. URL code> Propriété si vous devez préformer différentes actions p> p>
OP a dit que le JSON n'est toujours pas traité lorsque l'achèvement est appelé, cela ne fonctionnerait pas, non?
Oui, c'est pourquoi je demande. Donc, cette réponse ne m'aidait pas.
Oh je suis mal j'ai mal lu. Quant à votre problème, il pourrait y avoir un correctif bientôt si vous pouvez attendre. Github.com/afnetworking/afnetworking/issues/362
Vous pouvez déplacer votre opération JSON au début de la file d'attente, puis ajouter une dépendance afin qu'une autre opération puisse seulement démarrer après la fin de l'opération JSON:
[lastOperation addDependency:jsonOperation]
Pourriez-vous être plus précis ?
Je suppose que quelque chose comme ceci: Si (précédenteOPERATION) {[Opération AddDePendance: PrécédentOrtère]; } PrécédentOrtère = opération; [Opérations AddObject: opération]; Ça n'a pas fonctionné pour moi
Il semble qu'il n'y ait pas de moyen facile de faire exactement ce que la PO demande, alors voici quelques solutions de contournement faciles.
une stratégie plutôt émoussée serait d'utiliser de sorte que le bloc de réussite de l'opération ressemblerait à p> Les mises en garde s'appliqueraient - pour les grandes réponses JSON Ceci est potentiellement bloquant le code et certaines des travaux de contournement Afnetworking à AFHTTPEQUESTOPERATION code> au lieu de
AFJSONRQUESTOPERATION code> puis convertissez la réponse à l'aide de
nsjsonsorialisation code>. p>
NSJSONSerialization code> ne s'appliqueraient pas. Mais cela vous aiderait. P>
AFJSONREQUESTOPERATION CODE> et appelant
de réponse le bloc d'achèvement du lot. Je suis bon avec ça si votre situation le permet. Dans mon cas d'utilisation actuel, il complique un peu mon code (j'utilise un ensemble mixte d'appels JSON, le code est donc plus propre si je peux la conserver dans un bloc de réussite code> directement associé à l'opération). p> p>
Il serait plus logique d'utiliser l'opération JSON et d'appeler simplement ResponsifJson code> sur celui-ci dans le bloc d'achèvement du lot. Cette méthode renvoie de manière synchrone. Cela fournit le comportement que l'OP veut sans les mises en garde que vous mentionnez.