2010-08-25 8 views
0

J'écris une application où nous communiquons avec un service Web dans json. J'aimerais mettre en cache les données de ce service, afin que l'utilisateur puisse toujours afficher les données mises en cache pendant que nous récupérons les données mises à jour. J'ai étudié un projet mineur; Ressource principale qui est une couche sur les données de base. Il convertit de JSON en objets de données, et il semble très prometteur. Étant donné que ce projet n'a pas une grande communauté ou une grande progression dans le développement ultérieur, je ne suis pas sûr que ce soit intelligent à utiliser pour moi.Comment communiquer avec le service Web dans JSON et les données de base?

Est-ce que quelqu'un connaît un projet similaire? Ou devrais-je le faire moi-même avec juste une bibliothèque JSON et Core Data?

Répondre

0

Il est trivial de convertir JSON en données de base et vers l'arrière. J'ai effectivement posté une réponse ici sur Stack Overflow qui passe par là.

JSON and Core Data on the iPhone

Autre que cela, en utilisant NSURLConnection pour pousser et tirer les données est tout ce que vous avez vraiment besoin. Une "bibliothèque" pour cela semble être une complexité supplémentaire inutile.

+0

Je vais opter pour cette solution, et je pense que vous avez raison. – Andi

+0

J'ai essayé votre implémentation et je ne suis pas d'accord avec le fait que ce n'est pas nécessaire avec un framework/bibliothèque pour le mappage entre les objets JSON et Core Data. Il est possible que j'ai mal compris quelque chose. J'ai fait beaucoup de travail pour que votre implémentation corresponde à mes exigences. Votre implémentation ne se soucie pas si des objets existent déjà et doivent être supprimés, modifiés ou créés. Je pense que je fais beaucoup de logique qui pourrait être utilisée de manière générale. Votre code est un bon point de départ, mais il est loin de ce dont j'avais besoin. – Andi

+0

Le code que j'ai posté dans une réponse à titre d'exemple est juste cela, un exemple. Ce n'est pas une goutte de solution à vos besoins spécifiques. C'est une démonstration de la puissance de KVC pour faciliter la transformation récursive entre JSON et Core Data. Un Framework/Library est inutile car vos données sont uniques à votre application et une solution générique va presque certainement être trop compliquée et/ou inefficace. Ecrivez votre propre implémentation basée sur des exemples et vous en apprendrez beaucoup plus sur la langue. –

0

Une idée pourrait être d'utiliser le cache d'URL de NSURLConnection du système de chargement d'URL iPhone classique qui prend en charge la mise en cache au niveau de l'URL. Cela fonctionnera surtout dans le contexte des services web RESTFUL. Vous pouvez utiliser le cache intégré de l'API ou implémenter votre propre stratégie de chachage. (Voir here) Si vous ne voulez pas conserver votre cache, vous n'avez pas besoin de CoreData.

+0

Je veux conserver mes objets afin que l'utilisateur ait toutes les données précédemment chargées disponibles en mode hors ligne. J'ai regardé un GDataHTTPFetcher de classe de Google qui donne le support brillant pour le cache de mémoire avec le soutien de last-modified dans l'en-tête HTTP. J'ai pensé à écrire quelque chose de similaire avec le cache disque pour iPhone, mais j'ai besoin de traiter mes données même lorsque le serveur renvoie un message 304. J'ai vraiment aimé cette classe, mais ce n'est pas ce que je cherche. – Andi

+0

droite l'approche suggérée était juste destiné à une utilisation non persistant. Dans ce cas, CoreData est le choix parfait – Chris

Questions connexes