2010-09-27 5 views
0

J'essaie de vérifier l'existence d'une clé dans un fichier plist dans xcode. Mon fichier plist a cette structure.Comment vérifier l'existence d'une clé dans plist?

Root (Dictionary) 
+- Parent1 (Dictionary) 
    - Key1 (Boolean) 
    - Key2 (Boolean) 
    - Key3 (Boolean) 
    - Key4 (Boolean) 

+- Parent2 (Dictionary) 
    - Key1 (Boolean) 
    - Key2 (Boolean) 

Maintenant, je dois vérifier si Key2 existe dans Parent1 ou non? J'ai vérifié NSDictionary mais ne pourrais pas obtenir comment faire ceci.

Des suggestions sur comment faire cela?

Répondre

5
NSDictionary *dict = [NSDictionary dictionaryWithContentsOfFile:@"your.plist"]; 
BOOL key2Exists = [[dict objectForKey:@"Parent1"] objectForKey:@"Key2"] != nil; 

En ce qui concerne la comparaison nil explicite, je l'utilise parfois parce qu'il rend le code plus lisible pour moi (il me rappelle que la variable sur le côté gauche de l'instruction est un booléen). J'ai également vu une "fonte booléenne" explicite:

BOOL key2Exists = !![[dict objectForKey:@"Parent1"] objectForKey:@"Key2"]; 

Je suppose que c'est une question de préférence personnelle.

+0

'BOOL key2Exists = [subDict objectForKey: @" Key2 "];' fera; le bit '! = nil' est superflu. –

+0

Génial, ça a marché, merci :) – raziiq

+0

@Williham: Si! = Nil n'est pas utilisé, un avertissement apparait, donc je suppose qu'il vaut mieux l'utiliser! = Nil – raziiq

1
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:@"some.plist"]; 
NSDictionary *parentDictionary = [dictionary objectForKey:@"Parent1"]; 

NSSet *allKeys = [NSSet arrayWithSet:[parentDictionary allKeys]]; 
BOOL keyExists = [allKeys containsObject:@"Key2"]; 
Questions connexes