2010-12-12 26 views
2

Quel est le meilleur moyen d'obtenir des données d'Internet, compressées et composées par PHP, vers une application iOS? Actuellement, l'application lit une chaîne formatée comme ceci:Quel est le meilleur moyen d'obtenir des données de PHP vers une application iOS?

category1#object2#object3#object4~category2#object2#object3[…] 

Et qui est divisé par les # « s et ~ » s.

Existe-t-il une meilleure façon de faire cela, à la fois dans la façon dont les données sont récupérées (le site d'où il provient est ouvert à tous), et la façon dont les données sont formatées?

Répondre

17

Utilisation JSON:

{"category1":["object1", "object2", "object3", "object4"], "category2":["object1", "object2"]} 

Donc, dire que vous aviez un objet PHP ou tableau associatif, vous seriez en mesure d'invoquer simplement json_encode dessus et être fait avec elle.

Sous iOS, vous devez utiliser JSONKit pour l'analyser.

La meilleure chose à propos de ces deux extrémités du pipeline est que il existe un support natif pour eux. Par exemple, json_encode peut encoder n'importe quel objet PHP en une chaîne JSON lisible, alors que JSONKit peut analyser un objet JSON et le stocker dans un NSDictionary ou NSArray.

Heck, avec JSONKit, elle augmente la capacité (en utilisant les catégories sur NSDictionary et NSArray) pour convertir des objets NSDictionary et NSArraydans JSON, de sorte que vous pouvez même avoir un pipeline de communication JSON dans les deux sens.

(Nous le faisons avec nos jeux à Freeverse, la méthodologie est éprouvée.)

+1

Ce semble très simple! Je vais regarder dedans. Merci;) – Emil

+0

@Emil Vous êtes les bienvenus! :) –

+0

@jacob Comment sécuriser le trafic entre le serveur web et l'application? – Emil

2

acani utilise JSON aussi, mais si vous avez une alimentation très long, XML est mieux parce que Apple a déjà construit un asynchrone Bibliothèque d'analyse XML alors que la bibliothèque JSON est synchrone. Ainsi, en utilisant la bibliothèque JSON, vous devez attendre que la réponse JSON complète soit téléchargée puis analysée avant d'accéder à l'un des éléments. Avec la bibliothèque XML, il commence à analyser le XML avant d'attendre qu'il soit complètement téléchargé, ET il appelle une fonction de rappel après que chaque élément du XML a fini d'être analysé dans un objet Objective-C pour une utilisation immédiate. Ainsi, vous pouvez accéder aux objets avant que le flux entier ait été téléchargé. Donc, pour les petits flux, utilisez JSON (parce que j'aime JSON, et c'est plus facile). Pour les flux volumineux, utilisez XML. Heureusement, ils sortiront bientôt avec une solution JSON asynchrone. Regardez l'exemple d'application Top Songs Xcode pour un exemple d'utilisation asynchrone de la bibliothèque XML.

+0

Cela n'a pas vraiment d'importance pour moi, car tout se passe dans un fil de fond de toute façon, mais merci :) – Emil

3

Au lieu d'une autre réponse JSON, je vais donner quelques liens sur "Choisir la meilleure bibliothèque JSON":

Et maintenant pour le sans vergogne prise pour ma propre solution d'analyse JSON, JSONKit: