2010-09-27 75 views
0

我正在檢查xcode中plist文件中是否存在密鑰。 我的plist文件具有這種結構。如何檢查plist中是否存在密鑰?

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

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

現在我需要檢查Key2是否存在於Parent1中?我檢查了NSDictionary但無法得到如何做到這一點。

有關如何做到這一點的任何建議?

回答

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

至於明確nil比較,我有時是因爲它使代碼更易讀,我(它提醒我,在語句的左側的變量是一個布爾值)使用它。我也看到了一個明確的「布爾投」:

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

我想這是個人喜好的問題。

+0

'BOOL key2Exists = [subDict objectForKey:@「Key2」];'will do; '!= nil'位是多餘的。 – 2010-09-27 09:38:30

+0

輝煌,工作,謝謝:) – raziiq 2010-09-27 09:41:51

+0

@Williham:如果不使用!=零,警告出現,所以我想它更好用!=零 – raziiq 2010-09-27 09:43:41

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

NSSet *allKeys = [NSSet arrayWithSet:[parentDictionary allKeys]]; 
BOOL keyExists = [allKeys containsObject:@"Key2"]; 
相關問題