2013-01-01 66 views
1

我目前正在嘗試讀取一個plist文件,並試圖顯示在UITableView中的數據,但在閱讀plist文件時我得到零數據。NSDictionary包含<nil>價值,同時閱讀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"> 
<array> 
    <dict> 
     <key>Title</key> 
     <string>Mr</string> 
     <key>First Name</key> 
     <string>xxxxxx</string> 
     <key>Last Name</key> 
     <string>yyyyyyy</string> 
     <key>Designation</key> 
     <string>Senior Engineer</string> 
    </dict> 
</array> 
</plist> 

現在代碼

NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 

NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path]; 

NSArray *valueArray = [dict allKeys]; 

/* 
Printing description of path: 
/Users/rock/Library/Application Support/iPhone Simulator/6.0/Applications/2567D2B3-56D4-4464-9EFC-CAB923ABE955/PlistTableView.app/Data.plist 
Printing description of dict: 
<nil> 
Printing description of valueArray: 
<nil> 
*/ 

現在,這兩個字典&數組不包含任何數據究竟是什麼原因呢?我如何在表格視圖中顯示兩個鍵&值?

回答

2

你的plist文件裏面包含數組字典。因此,無論使用

NSArray *array = [[NSArray alloc] initWithContentsOfFile:path]; 
NSDictionary *dict = [array objectAtIndex:0]; 

或更改plist文件的結構

<plist version="1.0"> 
<dict> 
    <key>Title</key> 
    <string>Mr</string> 
    <key>First Name</key> 
    <string>xxxxxx</string> 
    <key>Last Name</key> 
    <string>yyyyyyy</string> 
    <key>Designation</key> 
    <string>Senior Engineer</string> 
</dict> 
</plist> 
+0

[陣列objectAtIndex:0];只是返回的第一個字典值但如果我的數組包含一個以上的字典那麼如何才能讓所有的值? –

-1

在文件的開頭試試這個:

<?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"> 
1

在頂部,你有一個<array>而不是<dict>。因此,它應該是這樣的......

NSString *path = [[NSBundle mainBundle] pathForResource:@"Data" ofType:@"plist"]; 
NSArray *array = [[NSArray alloc] initWithContentsOfFile:path]; 
NSDictionary *dict=[array objectAtIndex:0]; 
NSArray *valueArray = [dict allKeys]; 
+0

[array objectAtIndex:0];剛剛返回第一個字典值但是如果我的數組包含多個字典,那麼如何獲取所有值? –