2011-10-03 6 views
1

J'ai un plist qui ressemble à ci-dessous. Quelle est la méthode préférée pour lire un plist dans et comment puis-je lire ceci dans un tableau? Je peux créer un NSMutableDictionary, charger le contenu de cette plist, charger les clés dans un tableau et ensuite utiliser une boucle for pour lire les 2 clés supérieures - SomeData et MoreData. Mais je suis incapable d'analyser toutes les autres clés (Key1, Key2 et Key3). Comment ferais-je cela? Code collé ci-dessous qui passe par les 2 premières touches. (SomeData et MoreData). Merci.lire un fichier plist dans Cocoa

Plist:

<?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>SomeData</key> 
    <array> 
     <dict> 
      <key>Key1</key> 
      <false/> 
      <key>Key2</key> 
      <dict> 
         <key>Key3</key> 
         <integer>0</integer> 
        </dict> 
      </dict> 
     </array> 
     <key> MoreData</key> 
    </dict> 
    </plist>  

code:

-(IBAction)modifyPlist:(id)sender{ 

    NSLog(@"Listing Keys"); 
    NSMutableDictionary *dict = [NSMutableDictionary dictionaryWithContentsOfFile:@"/Users/sureshb/Documents/myprogs/plistMod/com.test.plist"]; 

    NSArray *keys = [dict allKeys]; 

    for (NSString *key in keys){ 
     NSLog(@"%@",key); 
     } 

} 

Répondre

3

Si je ne me trompe pas, vous pouvez accéder à ces valeurs de manière suivante:

NSArray *someData = [dict objectForKey:@"SomeData"]; 
BOOL key1 = [[[someData objectAtIndex:0] valueForKey:@"Key1"] boolValue]; 
int key2 = [[[[someData objectAtIndex:0] objectForKey:@"Key2"] objectForKey:@"Key3"] intValue]; 
+0

Merci Nekto. Ça a marché. – cocoacoder

+0

Vous êtes les bienvenus – Nekto