Question

Quelle serait la manière la plus élégante de recevoir des données d'une API JSON en streaming à l'aide d'AFNetworking?AFNetworking fournit un excellent support pour recevoir des données non diffusées depuis les API JSON, mais je n'ai trouvé aucun exemple de streaming JSON.

Était-ce utile?

La solution

AFNetworking n'a pas d'opération JSON de streaming intégrée de style SAX, mais il devrait être simple de créer la vôtre.

  • Créer une sous-classe de AFJSONRequestOperation
  • Utilisez la propriété outputStream de l'opération lors de l'initialisation pour la connecter à un analyseur JSON prenant en charge l'analyse de type SAX (comme Yajl ). L'analyseur lira les données et construira l'objet JSON au fur et à mesure de son entrée
  • Raccordez la propriété responseJSON pour lire l'objet mis en cache à partir de l'analyseur
  • ... ou selon la façon dont vous effectuez le streaming, vous devrez peut-être ajouter une nouvelle propriété qui définit un bloc à exécuter lorsque de nouveaux objets JSON reviennent (par exemple, setReceivedJSONBlock:((^)(void (id JSON))block). Ce bloc sera probablement déclenché par des méthodes déléguées envoyées par l'analyseur (par exemple, <YAJLParserDelegate> -parserDidEndDictionary:).

Si vous parvenez à faire fonctionner cela, je vous encourage à le publier et à le partager avec d'autres. Je pense que cela pourrait être utile à un certain nombre de personnes.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top