[Projet] Une application sur un club sportif

zyvauzyvau Membre
14:45 modifié dans Vos applications #1
Bonjour bonjour  :)

Je viens de découvrir votre site (par le biais du site ipup.fr) et je suis très content de trouver une petite communauté française de développeurs sur iPhone et Mac. Cela risque de m'être bien utile! J'espère que je pourrai aider un petit peu aussi, mais comme je suis débutant...

Bref, passons au sujet du topic.
Je développe une application sur une équipe sportive (je dis tout de suite, ce n'est pas sur le foot, comme ça pas de rivalité OM/PSG). Cette application contiendra des données "permanentes" (description de chaque joueur...) mais aussi des données à  mettre à  jour (classements, statistiques, news...). J'ai donc deux questions:

1) Pour les données à  mettre à  jour, j'ai créé un petit script php qui génère des fichiers xml sur un serveur. J'utilise les tutos du site ipup.fr pour parser ces fichiers. Mais ces données devraient être aussi accessibles offline, la meilleure solution est-ce de télécharger les fichiers xml puis de les parser? Comme ça s'il n'y a pas de connexion, l'app utilise les anciens fichiers xml qui sont sur l'iPhone.

2) Pour les données "permanentes", comme par exemple les descriptions sur chaque joueur, comment je les garde? Un fichier xml ça me semble pas pratique, je les mets plutôt dans un NSArray?

Voila, merci d'avance. ^^

Réponses

  • 14:45 modifié #2
    Suffit qu'une fois parser tu stocke la Array dans ton NSUserDefaults.
    Pour faire encore plus clean, à  chaque lancement tu devrais vérifier si ta base de données online a été mise à  jour, un système de date fera largement l'affaire. Par conséquent, tu télécharges automatiquement la nouvelle base avec la date.
  • zyvauzyvau Membre
    14:45 modifié #3
    Si je mets des news, ce n'est pas trop gros pour NSUserDefauts?
  • AliGatorAliGator Membre, Modérateur
    14:45 modifié #4
    Si, enfin ça dépend ce qu'on appelle "trop gros", mais en effet NSUserDefaults est plutôt pensé pour les préférences, donc des réglages. Ca peut stocker plein de clés ou de NSArrays et NSDictionaries, mais bon, c'est p'tet pas la solution la mieux pensée pour ce genre de cas, qui d'ailleurs ne sont pas vraiment des "UserDefaults" (au sens des réglages / préférences) mais plutôt un stockage statique de tes données.

    Le plus simple c'est de stocker tes données sur disque.

    Par exemple tu peux stocker le XML que tu télécharges sur le filesystem de l'iPhone (chaque application a un espace de stockage qui lui est propre sur l'iPhone et auquel les autres applications ne peuvent accéder " mais ton appli pas de soucis bien sûr " on appelle ça le "bac à  sable" ou SandBox). Et pourquoi pas stocker par contre la date de dernier téléchargement, elle, dans les NSUserDefaults, si tu veux savoir de quand elles datent si ça t'es utile pour les updates ou autre.

    Tu peux aussi stocker sur disque non pas le fichier XML téléchargé, mais le résultat du parsing. Par exemple si une fois le XML parsé tu gardes le résultat disons dans un NSArray de NSDictionary, tu peux très facilement en générer un fichier (fichier plist) avec "writeToFile:atomically:", et relire le fichier pour le retransformer en NSArray avec "initWithContentsOfFile:".

    Si tu stockes tes données via des classes plus complexes que NSArray, NSDictionnary, NSString, NSData..., il faut passer par la sérialisation (cf NSCoder et NSArchiver/NSKeyedArchiver/...), c'est un peu moins direct.

    Sinon tu peux stocker tes données dans une base SQLite (sqlite3 est intégré à  l'iPhone) selon si tu trouves ça plus pratique pour manipuler tes données, faire des requêtes (recherches) en SQL et tout.
  • zyvauzyvau Membre
    14:45 modifié #5
    Oki. Merci bcp pour la réponse je vais étudier tout cela.
Connectez-vous ou Inscrivez-vous pour répondre.