2011-10-03 83 views
1

我有一個plist,看起來如下。什麼是讀入plist的首選方法,以及如何將它讀入數組?我可以創建一個NSMutableDictionary,加載這個plist的內容,將這些鍵加載到一個Array中,然後使用for循環來讀取前兩個鍵 - SomeDataMoreData。但我無法解析所有其他密鑰(Key1Key2Key3)。我會如何去做這件事?粘貼的代碼在下面通過頂部2鍵。 (SomeDataMoreData)。謝謝。在Cocoa閱讀plist文件

的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>  

代碼:

-(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); 
     } 

} 

回答

3

如果我沒有記錯,你可以在明年的方式訪問這些值:

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

感謝Nekto。這工作。 – cocoacoder

+0

不客氣 – Nekto