2010-12-10 5 views
1

Je dispose d'un fichier .plist qui ressemble à ceci: alt textNavigation plusieurs dictionnaires imbriqués dans le fichier plist

et je me demandais comment je vais sur la navigation à travers les multiples dictionnaires ou si cela est encore la meilleure façon de mettre en dans le fichier plist.

Tous les éléments du dictionnaire ne seront pas associés aux mêmes années ou tailles, donc je ne suis pas sûr que les tableaux puissent être utilisés.

Répondre

2

Il n'y a pas de « meilleure façon » que tout le monde peut vous dire. Cela dépend de ce que vous faites et comment vous voulez utiliser le plist.

La méthode standard pour faire ce que vous parlez est de parcourir toutes les clés dans une instruction for...in, similaire à la réponse de filipe. Si vous connaissez le "chemin" que vous voulez traverser, vous pouvez également utiliser le [dict objectForKey:key] de NSDictionary pour obtenir un accès plus direct que tout en boucle.

Il n'y a pas de magie ici, pensez à ce type de structure comme un arbre non ordonné. Vous avez une liste d'éléments ou de «branches» et chaque élément peut lui-même être une autre branche, avec un nœud «feuille» ou valeur de l'arbre non ordonné à la fin d'un chemin de traversée donné.

Espérons que ça aide.

1

vous pouvez utiliser la propriété keyEnumerator passer par toutes les clés dans le dictionnaire, ou vous pouvez simplement utiliser

for (NSString *key in myDict) 
{ 
    ... 
} 
0
NSArray *paths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); 
// get documents path 
NSString *documentsPath = [paths objectAtIndex:0]; 
// get the path to our Data/plist file 
NSString *plistPath = [documentsPath stringByAppendingPathComponent:@"DecisionName.plist"]; 
NSLog(@"Error in dictionary"); 
NSLog(@"HELLO"); 
NSMutableDictionary *plistDict = [[NSMutableDictionary alloc] initWithContentsOfFile:plistPath]; 

NSArray *testChoice = [[NSArray alloc] initWithArray:[plistDict objectForKey:selectedDecision]]; 
self.choices = [testChoice objectAtIndex:0]; 
self.preferences = [testChoice objectAtIndex:1]; 

Ce code sera utile qui utiliser pour obtenir des valeurs de plist ayant une structure suivante ......

<?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"> 
<array> 
    <array> 
     <string>Toyota</string> 
     <string>Honda</string> 
    </array> 
    <array> 
     <string>Speed</string> 
     <string>Reliability</string> 
     <string>Price</string> 
    </array> 
</array> 
</plist> 
Questions connexes