2010-08-16 7 views
5

j'ai un plist qui va comme ceci:accéder aux données plist

<dict> 
    <key>11231654</key> 
    <array> 
     <string>hello</string> 
     <string>goodbye</string> 
    </array> 
    <key>78978976</key> 
    <array> 
     <string>ok</string> 
    <string>cancel</string> 
    </array> 

j'ai charger le plist ceci:

NSString *path = [[NSBundle mainBundle] pathForResource: 
        @"data" ofType:@"plist"]; 
    // Build the array from the plist 
    NSMutableArray *array3 = [[NSMutableArray alloc] initWithContentsOfFile:path]; 

comment puis-je accéder à chaque élément de mon plist? je veux rechercher une clé correspondante dans le plist et de chercher avec son enfant. Comment puis-je faire ceci? toute suggestion?

à l'avance!

Répondre

8

Les tableaux sont indexés. Si vous voulez accéder au premier objet dans un NSArray, vous feriez les suivantes:

id someObject = [array objectAtIndex:0]; 

Si vous connaissez le type d'objet, vous pourriez le faire comme ceci:

NSString *myString = [array objectAtIndex:0]; 

EDIT: Vous devez utiliser un NSDictionary pour les données dont vous disposez: notez qu'il commence par une balise <dict> et non une balise <array> (bien qu'il existe des tableaux en tant que valeurs).

NSString *path = [[NSBundle mainBundle] pathForResource: 
       @"data" ofType:@"plist"]; 
// Build the array from the plist 
NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 

NSArray *value = [dict valueForKey:@"11231654"]; 

Maintenant, vous pouvez faire ce que vous voulez avec votre tableau.

+0

comment puis-je accéder à la valeur d'index? 11231654 dans cet exemple – Stefan

+0

Dans ce cas, vos données doivent être chargées dans un NSDictionary. Je vais mettre à jour ma réponse. –

1

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

1

Voici comment vous devez créer plist

plist screenshot

Set racine tableau au lieu de dictionnaire, cela vous donnera des résultats dans l'ordre. Avec les lignes de code ci-dessous vous pouvez aller chercher plist complète.

NSString *pathOfPlist = [[NSBundle mainBundle] pathForResource:@"data" ofType:@"plist"]; 
arrPlistValue = [[NSArray alloc]initWithContentsOfFile:path]; 
NSLog(@"Plist Value : %@",arrPlistValue); 

Après que vous pouvez chercher tout contenu spécifique avec le code ci-dessous:

NSString *strName = [[arrTempValue objectAtIndex:0] objectForKey:@"name"]; 
NSString *strImage = [[arrTempValue objectAtIndex:0] objectForKey:@"image"]; 
int idValue = [[[arrTempValue objectAtIndex:0] objectForKey:@"id"] integerValue]; 
BOOL isSubCat = [[[arrTempValue objectAtIndex:0] objectForKey:@"isSubCategory"] boolValue]; 

Avec ce code, vous pouvez chercher entier, chaîne, booléen de plist.!

Questions connexes