Charger contenu .plist dans UITableView
Salut à tous !
je suis entrain de créer en ce moment ma première application pour iPhone.
Jusque là ça avance pas trop trop mal, mais depuis deux jours j'avance pas. J'ai créé une view avec dedans un UITableView, et je voudrais charger le contenu d'un fichier plist.
Voici la structure de mon plist:
Je dispose donc de ditionnaire pour chacune des lettres, car l'affichage sera dans un TableView Indexed. J'ai jusque là suivi un tuto, mais la conception de mon plist est différentes, et j'arrive pas a changer le code pour que cela marche.
Voici le code de mon viewload d'origine (celui réalisé avec le tuto). (Dans le plist du tuto, il y avait un Array pour chacune des lettres, et dans chaque array, des Strings avec des prénoms).
Dans mon Table view je voudrais charger pour chacune des lettres les noms des pays puis lorsque l'on selectionne un des ces pays, une nouvelle vue s'ouvre. Pour cette vu j'ai besoin d'avoir l'Array du pays sélectionné, afin d'afficher les informations des différentes villes.
Si quelqu'un pourrait me donner un petit coup de main, ça serait vraiment gentil. Je cherche de partout et pour l'instnant j'arrive pas trop a maitriser ce chapitre.
Merci à vous!
je suis entrain de créer en ce moment ma première application pour iPhone.
Jusque là ça avance pas trop trop mal, mais depuis deux jours j'avance pas. J'ai créé une view avec dedans un UITableView, et je voudrais charger le contenu d'un fichier plist.
Voici la structure de mon plist:
<br />- Root (Dictionnary)<br /> - A (Dictionnary)<br /> - B (Dictionnary)<br /> - C (Dictionnary)<br /> - F (Dictionnary)<br /> - France (Array)<br /> Paris (String)<br /> 000 (Number)<br /> 000 (Number)<br /> Lyon (String)<br /> 000 (Number)<br /> 000 (Number)<br /> Marseille (String)<br /> 000 (Number)<br /> 000 (Number)<br /> - G (Dictionnary)<br /><br />.<br />.<br />.<br />.<br /> <br />
Je dispose donc de ditionnaire pour chacune des lettres, car l'affichage sera dans un TableView Indexed. J'ai jusque là suivi un tuto, mais la conception de mon plist est différentes, et j'arrive pas a changer le code pour que cela marche.
Voici le code de mon viewload d'origine (celui réalisé avec le tuto). (Dans le plist du tuto, il y avait un Array pour chacune des lettres, et dans chaque array, des Strings avec des prénoms).
<br /><br /> NSString *path = [[NSBundle mainBundle] pathForResource:@"villes" ofType:@"plist"];<br /> NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];<br /> self.names = dict;<br /> <br /> NSArray *array = [[names allKeys] sortedArrayUsingSelector:@selector(compare:)];<br /><br /> self.keys = array;<br /><br /> [dict release];<br /> [array release];<br /> [path release];<br /><br />
Dans mon Table view je voudrais charger pour chacune des lettres les noms des pays puis lorsque l'on selectionne un des ces pays, une nouvelle vue s'ouvre. Pour cette vu j'ai besoin d'avoir l'Array du pays sélectionné, afin d'afficher les informations des différentes villes.
Si quelqu'un pourrait me donner un petit coup de main, ça serait vraiment gentil. Je cherche de partout et pour l'instnant j'arrive pas trop a maitriser ce chapitre.
Merci à vous!
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
- L'affichage des pays dans une tableview indexed selon le code ci-dessus.
ou bien
- L'affichage (ou la selection) de la vue pour chaque pays.
Si on savait aussi ce qui marche, par élimination on pourrait aider.
Ce code je l'ai trouvé dans le livre: "Beginning iPhone Development" de Dave Mark & Jeff LaMarche.
Il est adapté a plist de type:
- Root (Dictionnary)
- A (Array)
nom (String)
Il affiche des noms classé par ordre alphabétique, une section par lettre.
Je n'arrive malheureusement pas trop à maitriser tout ça pour le moment
Donc si tu maitrises bien les TableView, ça serait vraiment sympas de ta part si tu pouvais m'éclairer.
Je sais d'où vient le problème, ça vient entre autre du fait que les noms des pays sont des Dictionnaires et non des String. Mais je ne vois pas trop comment continuer
root
-A (array)
....
-F (array)
-Finlande (array)
...;
-France (array)
-Paris (dictionary)
-key=region value=Ile de france (string)
-key=population value= 2 181 371 (number)
-key=..
-Marseille (dictionary)
-key=region value=Provence , Côte d'Azur (string)
-key=population value= 2 181 371 (number)
-key=..
Maintenant pour représenter cette arborescence, une seule table view ne peut suffire.
Il faut une table view (et donc un UITableViewController) pour les initiales A ... F, puis une seconde table view pour présenter les pays correspondant à une initiale, et enfin un troisième niveau pour présenter les villes.
Donc premièrement, mettre en place la table view pour installer les initiales :
root
-A (array)
....
-F (array)
-Finlande (array)
...;
-France (array)
-1 (dictionary)
-key=ville value=Paris (string)
-key=region value=Ile de france (string)
-key=population value= 2 181 371 (number)
-key=..
-2 (dictionary)
-key=ville value=Marseille (string)
-key=region value=Provence , Côte d'Azur (string)
-key=population value= 2 181 371 (number)
-key=..
Cela ne modifie pas le nombre de niveaux.
Mais bon il faut quand même plus d'une tableView de toute façon évidemment, une pour la liste des pays (groupés suivant l'initiale donc), et une autre pour que quand on clique sur un pays ça affiche les villes dudit pays...
Il y a deux choses. Pour l'arborescence du plist, si F est un array, alors l'array France devra s'appeller item. C'est pour ça que je voulais utiliser des NSDictionnary pour les lettres.
Ensuite oui ce que je veux ce sont 2 vues. la première affiche les Pays trié par ordre alphabétique, découpés en sections pour chacune des lettres. Et exactement comme pour l'app Contact, avec la petite réglette avec les lettres. Pour ça tout est là , quand je test avec le plist du tuto, ça marche parfaitement.
Maintenant ce que je voudrais, c'est extraire correctement les infos de mon plist.
Ensuite la seconde vue, ça ça sera facile a réaliser, une nouvelle vue va se créer, et j'aurais juste a disposer en donnés, l'array du pays sélectionné.
Les TableView sont je trouve assez compliqués. J'espère pouvoir réussir celà un de ces jours, car tout le reste avance assez vite.
Quitte le tuto des yeux !
et la plist
C'est parce que là ce n'est une simple table view que tu gères (une NSArray), c'est une arborescence. Donc tu n'es pas dans le modèle NSTableView de Cocoa, mais le modèle NSOutineView/NSBrowser
Je dois malheureusement m'absenter aujourd'hui, donc je pourrais tester que ce soir, et je te donnerais des nouvelles !
Encore merci pour cette aide très précieuse
Et ça marche parfaitement ! Merci énormément d'avoir consacré autant d'efforts afin de m'aider