2010-08-15 6 views
1

J'ai un plist sous la forme suivante:programmation iPhone, chargement des données plist, y accéder

Root (tableau) ---> article 1 (dictionnaire) ----> Sch (string) - -> Nom (chaîne) ----> prix (nombre) ----> élément 2 (dictionnaire) ----> ..... identique à l'élément 1

Comment puis-je accéder à chacun ligne (item1 à ...) et son enfant (Sch, Name etc.)? Un à la fois?

J'utilise:

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"Data.plist"]; 
NSDictionary *plistData = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain]; 

pour charger le fichier. Comment dois-je procéder pour accéder à chaque enfant? Ce que j'essaye de faire est, j'ai un message de NSString *, ce que je veux faire est rechercher toute la chaîne pour la chaîne assortie et montrer l'article entier 1. Une suggestion?

Répondre

2

Lorsque vous initialisez une collection à partir d'un plist, le type est l'objet de niveau racine. Par conséquent, vous ne seriez pas initialiser un dictionnaire, mais un tableau comme ceci:

NSArray *plistData = [[NSArray arrayWithContentsOfFile:finalPath] retain]; 

Ensuite, vous y accéder comme ceci:

NSString *sch; 
NSString *name; 
NSString *price; 
for (NSDictionary *aDict in plistData) { 
    sch = [aDict objectAtKey:"Sch"]; 
    name = [aDict objectAtKey:"Name"]; 
    price = [aDict objectAtKey:"price"]; 
    //.. do whatever 
} 
1

Here est un lien vers une discussion qui a fourni un très bon exemple de la façon dont pour accéder à vos données et quel type de systèmes de stockage serait plus bénéfique dans certaines circonstances. La solution de TechZen @ est sur la cible, je pensais juste que cette question ajouterait une ressource supplémentaire. J'espère que cela t'aides!

Questions connexes