Enregistrement de données en local

PierrePierre Membre
18:40 modifié dans Vos applications #1
Bonjour, je cherche à  enregistrer des données sous forme d'objet dans mon applications iPhone client/serveur.

Voici ce que j'aimerais faire :

Démarrage de l'application
Si l'application n'a pas les informations en mémoire => appel à  l'API et chargement des informations en mémoire.
Appel des informations contenues en mémoires.
Affichage à  l'utilisateur.

Je connait  'NSUserDefaults' (seulement de nom jamais utilisé) mais je ne sait pas si c'est approprié pour stocker beaucoup d'informations.

Mes questions sont :
- Que me conseillez-vous d'utiliser pour enregistrer mes données ?
- Mon API me renvoie du XML doit-je stocker le XML et le parser à  chaque fois ? Ou doit-je plutôt parser le XML quand je le récupère et stocker des Objets ?
- Dans les deux cas comment puis-je faire (pour enregistrer et pour relire les données) ?

Merci d'avance pour vos lumières,
Pierre

Réponses

  • AliGatorAliGator Membre, Modérateur
    18:40 modifié #2
    Réponse : parser le XML quand je le récupère et stocker des Objets.

    Pour cela, il faut regarder du côté de la sérialisation. Et comme souvent, il y a un Programming Guide pour ça :P (à  dire sur le ton d'une pub pour iPhone :D)
  • PierrePierre Membre
    18:40 modifié #3
    Merci AliGator, j'ai été lire le "programming guide" mais il me parle seulement des méthode sérialisation "Property Lists", il en existe pas d'autres ?

    Pierre
  • AliGatorAliGator Membre, Modérateur
    18:40 modifié #4
    Regarde toute la partie "Archives" décrit dans ce guide (NSArchiver / NSUnarchiver, NSCoder et méthodes  "initWithCoder:" et "encodeWithCoder:"), qui explique la façon plus générique et globale de sérialiser des objets plus complexes (pour lesquels les plist sont trop simplistes)
  • PierrePierre Membre
    mai 2010 modifié #5
    J'ai trouvé la doc de la classe :
    NSKeyedArchiver Class Reference

    Et la partie : "Encoding and Decoding Objects" je croit que je vais trouve rmon bonheur la dedans. ;)

    Pierre
  • PierrePierre Membre
    18:40 modifié #6
    Après avoir implémenté les fonctions pour "sérialiser des objets plus complexes" comme conseillé par AliGator, je pense que l'enregistrement fonctionne.

    Par contre à  la relecture l'appli. plante.

    Donc soit mon enregistrement est mal fait (donc les données écrites sont corrompus), soit ma lecture plante.

    Je continue à  chercher, si vous avez des pistes avec des morceaux de codes qui montre des exemples bien fait je suis preneur. :)

    Pierre
  • CéroceCéroce Membre, Modérateur
    18:40 modifié #7
    Pense à  envoyer un [retain] aux objets désérialisés, c'est une erreur classique (que je fais régulièrement).
Connectez-vous ou Inscrivez-vous pour répondre.