Un des avantages de la liste des fichiers de propriétés, qui sont rien de plus que des fichiers texte qui suivent la norme XML, c'est qu'il peut être transformé instantanément en objets (tels que des tableaux ou dictionnaire) Objective-C. Lorsque vous créez une liste de propriétés du fichier:

Par défaut, Xcode 4 génère le code suivant:
1 2 3 4 5 | encoding = "UTF-8" ?> <? Xml version = "1.0" encoding = "UTF-8"?> <DOCTYPE plist PUBLIC "- / / Apple / / DTD PLIST 1.0 / / EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> > <plist version = "1.0"> <dict /> </ Plist> |
Xcode IDE, il est affiché comme un dictionnaire, et vous ne pouvez ajouter des éléments mais ne modifie pas son type. Souvent, cependant, il est plus commode d'un tableau, c'est à dire créer un tableau de dictionnaire au lieu d'un dictionnaire de dictionnaire, et ce pour deux raisons principales:
- Les tableaux sont commandés
- L'accès au réseau ne nécessite pas de clé
Pour transformer le dictionnaire principal suffit de sélectionner la liste des fichiers dans la propriété et Navigateur de projet - à partir du menu contextuel - choisissez Ouvrir en tant que> Source Code:

, salvare e tornare alla visualizzazione Property list; A ce stade, il suffit de remplacer les balises <dict/> avec <array/> , enregistrer et revenir à la liste des biens;

partir de ce moment, la racine du fichier XML sera un tableau (l'élément est identifié par article 0 qui est l'indice).
A ce stade, nous pouvons remplir notre tableau avec les éléments que nous préférons. Personnellement, j'utilise souvent le dictionnaire, qui est, en travaillant avec des tableaux de dictionnaire, car ceux-ci sont à l'aise pour en extraire de façon asynchrone, puis se connecter en utilisant les touches, les données qu'ils contiennent. Par exemple, imaginez avoir à gérer un quiz questions avec 4 réponses pour chaque question et, si une seule de ces réponses est correcte.
L'idéal serait d'avoir un tableau de précisément ces «questions» (c. dictionnaire), ordonné, et que chaque application contient: description, 4 réponses et le nombre de la bonne, ou une situation comme celle-ci:

Quel est le code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | encoding = "UTF-8" ?> <? Xml version = "1.0" encoding = "UTF-8"?> <DOCTYPE plist PUBLIC "- / / Apple / / DTD PLIST 1.0 / / EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> > <plist version = "1.0"> <tableau> <dict> <key> Description </ key> <string> Question 1 </ string> <key> ResponseTopLeft </ key> <string> Répondre 1 </ string> <key> ResponseTopRight </ key> <string> Réponse 2 </ string> <key> ResponseBottomLeft </ key> <string> Répondre 3 </ string> <key> ResponseBottomRight </ key> <string> Répondre 4 </ string> <key> réponse </ key> <entier> 2 </ integer> </ Dict> <dict> <key> Description </ key> <string> Question 2 </ string> <key> ResponseTopLeft </ key> <string> Répondre 1 </ string> <key> ResponseTopRight </ key> <string> Réponse 2 </ string> <key> ResponseBottomLeft </ key> <string> Répondre 3 </ string> <key> ResponseBottomRight </ key> <string> Répondre 4 </ string> <key> réponse </ key> <entier> 2 </ integer> </ Dict> </ Array> </ Plist> |
Le confort dans tout cela réside dans la simplicité avec laquelle il est possible de lire le fichier et ses données. Si notre fichier dans les ressources de l'application est appelée Quiz.plist :
1 2 3 4 5 | / / Lire la liste des fichiers propriété (xml) et le transforme en un / / Array (NSArray) arrayQuiz = [ NSArray arrayWithContentsOfFile : [ NSArray * arrayQuiz = [ NSArray arrayWithContentsOfFile: [ mainBundle ] pathForResource : @ "Quiz" [ NSBundle mainBundle] pathForResource: @ "Quiz" "plist" ] ] ; OfType: @ "plist"]]; |
Maintenant, puisque les éléments du tableau sont dictionnaire, pour en extraire - par exemple - le titre de toutes les questions, il suffit d'écrire:
1 2 3 | NSDictionary * item in arrayQuiz ) { pour ( NSDictionary * élément dans arrayQuiz) { "%@" , [ item objectForKey : @ "Description" ] ) ; NSLog (@ "% @", [point objectForKey: @ "Description"]); } |
Évidemment, la première question (tableau ordonné ...) sera en NSDictionary *question = [arrayQuiz objectAtIndex:0]; , et ainsi de suite. Faites défiler les questions ou obtenir un pointage direct devient vraiment simple et clair.
Dans la boucle, for exemple, vous pouvez instancier des objets et remplir les propriétés avec les paramètres du dictionnaire.










Il n'y a aucun commentaire pour cet article
Laisser un commentaire