2009-11-05 4 views
1

J'ai un exemple de fichier de base de données appelé albums.plist Il est structuré comme ci-dessous (mise en page très simple). Je suis novice en programmation Objective-C et j'apprendrai beaucoup si quelqu'un est capable de m'aider à comprendre cela.Comment extraire le deuxième enregistrement de mon plist?

Ce que je voudrais faire est programatically parse cette base de données et, par exemple, montrer à l'écran, par exemple, le deuxième album de détails - c'est l'album et l'artiste - sur deux UILabels

On serait un UILabel appelé artist_name et serait donc fixé à: @"David Bowie" et sous un autre UILabel appelé à album_name ensemble: @"Heroes"

quelqu'un peut-il me aider avec ça? J'apprendrais beaucoup de ça.

<?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> 
     <key>The Beatles</key> 
     <string>Let It Be</string> 
     <key>David Bowie</key> 
     <string>Heroes</string> 
     <key>Dire Straits</key> 
     <string>Brothers In Arms</string> 
    </dict> 
</plist> 

J'ai rencontré un code ci-dessous que je pourrais probablement utiliser pour ouvrir l'accès au fichier.

J'ai juste besoin de quelques indications sur la façon d'accéder au deuxième enregistrement dans la base de données?

Merci beaucoup.

NSString *path = [[NSBundle mainBundle] bundlePath]; 
NSString *finalPath = [path stringByAppendingPathComponent:@"albums.plist"]; 
plistDictionary = [[NSDictionary dictionaryWithContentsOfFile:finalPath] retain]; 
+0

C'est la structure de mon dossier: \t Les Beatles \t Let It Be \t David Bowie \t Heroes \t Dire Straits \t Brothers In Arms

Répondre

0

Si le dictionnaire correctement chargé, vous devriez être en mesure d'accéder à ses clés et des valeurs en utilisant quelque chose comme:

for (id key in plistDictionary) { 
    artist_name.text = key; 
    album_name.text = [ plistDictionary objectForKey:key ]; 
} 
0

[plistDictionary allKeys] retourne un tableau de toutes les clés dans le dictionnaire. Vous pouvez ensuite parcourir les clés du tableau ou en sélectionner une via son index. Sachez cependant que les dictionnaires n'ont pas d'ordre défini, donc vous ne pouvez pas vous fier à l'ordre des clés dans le tableau. Vous pourriez les trier, cependant. Une suggestion: Si vous pouvez changer le format de votre fichier plist, je vous suggérerais de le faire. Au lieu d'un dictionnaire de paires nom d'artiste/nom d'album, considérez un tableau de dictionnaires. Ce serait une structure plus propre pour vos données à mon humble avis et cela simplifierait aussi l'accès aux éléments du tableau. Comme ceci:

<array> 
    <dict> 
     <key>artist_name</key> 
     <string>The Beatles</string> 
     <key>album_name</key> 
     <string>Let It Be</string> 
    </dict> 
    <dict> 
     <key>artist_name</key> 
     <string>David Bowie</string> 
     <key>album_name</key> 
     <string>Heroes</string> 
    </dict> 
</array> 

Le code pour lire un tel fichier serait quelque chose comme ceci:

NSArray* plistArray = [NSArray arrayWithContentsOfFile:finalPath]; 

// Access the second entry in the array: 
NSDictionary *album = [plistArray objectAtIndex:1]; 
NSString *artistName = [album objectForKey:@"artist_name"]; 
NSString *albumName = [album objectForKey:@"album_name"]; 
NSLog(@"%@ - %@", artistName, albumName); 
+0

Une dernière question - dis que je voulais montrer via NSLog le nombre total de dictionnaires dans le tableau - y at-il un moyen facile de faire cela? –

+0

C'est ok, j'ai travaillé celui-là! Au cas où cela aiderait quelqu'un d'autre: NSLog (@ "Il y a% d enregistrements dans le fichier.", [Nombre de tableaux plist]); –

Questions connexes