pList: récupérer une seule propriété sans tout récupérer auparavant?

Bonjour tout le monde :slight_smile:

Je suis occupé de me battre avec les pLists, je vous explique:
J’ai un ficher pList organisé comme suit:

| __ facile
| ____ description
| ____ borne inferieur
| ____ borne superieur
|
| – normal
| ____ description
| ____ borne inferieur
| ____ borne superieur
|
| – difficile
| ____ description
| ____ borne inferieur
| ____ borne superieur

J’aimerai pouvoir récupérer, par exemple, “normal”.
Mais pour le moment, si je veux récupérer “normal”, je dois d’abord récupérer tout le contenu de ma pList avant de pouvoir faire quelque chose comme:

difficultes["normal"]

Dans le cas présent, je pense que tout récupérer n’est pas trop grave, puisque le fichier est tout petit, mais si mon fichier commence à grossir sérieusement, avec des key qui sont des dictionnaire dans des dictionnaires, etc?

J’ai aussi pensé à faire un dossier “difficultes” dans xCode, et ensuite trois fichier pList “facile”, “normal” et “difficile”, ainsi je récupère le fichier dont j’ai besoin, et je ne dois plus récupérer toutes les difficultés, mais alors, le problème qui se pose, c’est si dans un de mes viewController, j’ai besoin d’afficher:

facile
normal
difficile

Je vais alors devoir lire mes trois fichier pList puis récupérer les infos que j’ai besoin avant de les afficher? C’est un peu lourd, surtout si je commence à avoir un certain nombre de fichiers pList…

J’ai ensuite pensé faire les 3 fichiers pList, et un plus général “difficultes” par exemple, ainsi, je stocke toutes les infos des difficultés dans leur pList respectif, et juste leur nom dans le pList général, mais alors, imaginons que j’ai besoin d’afficher dans mon viewController le nom de la difficulté et la description, je vais alors devoir stocker le nom et la description de la difficulté dans les fichiers respectifs ET dans le fichier général? Bonjour les ennuis si je commence à dupliquer les infos…

Avez-vous une idée de comment je peux fonctionner?

Merci de votre aide,

Alexandre

Du moment que tu passes par un fichier xml (plist, userdefaults, etc.) tu devras presque toujours charger l’intégralité du fichier pour accéder à la moindre donnée.
La bonne nouvelle c’est que tant que tu n’as pas un fichier avec plusieurs milliers de lignes à l’intérieur, ça devrait bien se passer si tu ne le charges qu’une seule fois.
Fais toi une classe qui servira d’interface entre des viewcontrollers et tes fichiers.
Comme ça tu peux n’avoir qu’un fichier pour commencer et ta classe veillera à ne le charger qu’une seule fois, en tache de fond de préférence.
Si ta logique de jeu vient à évoluer drastiquement et que le chargement de ce fichier pose problème. Tu n’auras qu’à travailler un peu sur cette classe pour découper en plusieurs fichiers ou passer sur une base de données SQLite ou realm.
L’essentiel étant que tes view controllers soient indépendants de tout ceci et n’aient aucune idée de la façon dont les données sont stockées.