Synchronisation REST (différé)

AlakAlak Membre

Bonjour,


 


Je viens aujourd'hui vous demandez conseil sur la synchronisation d'une API RESTful avec mon application, le tout avec CoreData et pas en temps réel.


 


Je vous expose pour commencer les contraintes.


 


Je dois faire dans un premier temps une série de GET dépendant les uns des autres et donc devant être l'un après l'autre. Après que les GET soit tous passés et traités (mise a jours de mon model CoreData) je peux lancer les X PUT et les X POST (je pense les faire passer 3 par 3). Une fois la dernière requête de cette série de requêtes finie et la aussi traités je dois faire un GET sur une seul route. Pour finir quand ce dernier GET est traité je dois faire un save sur mon context CoreData (background thread).  


 


 


Après plusieurs essais infructueux (j'ai fait l'erreur de pas définir exactement mes besoins et contraintes avant de commencé, je suis tombé sur ce problème https://github.com/AFNetworking/AFNetworking/issues/1504).


 


Donc pour les GET j'utilise un NSOperationQueue avec un maxConcurrentOperationCount a 1 et un Custom NSOperation qui fait une requête Synchrone. Jusqu'ici ca marche parfaitement mais si je sais pas si c'est la bonne méthode, la contrainte étant surtout que le résultat des requêtes soit traité dans un ordre précis. 


 


Pour les PUT et POST mon problème est que je ne sais pas comment savoir quand toutes les requêtes sont passées et traitées comme elles sont exécutées sans ordre précis. (j'ai pensé utiliser un dispatch_group_t mais je sais pas si il y a mieux).


 


Pour le CoreData j'exécutes tout les traitements des résultats de mes requêtes dans des performBlockAndWait de mon NSManagedObjectContext.


 


Voila donc en gros je cherche la façon la plus propre de faire ma synchronisation.


 


Merci d'avance pour vos conseils.


 


Connectez-vous ou Inscrivez-vous pour répondre.