2013-01-23 93 views
0

我無法從下面的plist中獲得8個項目。 我有一個plist「settings.plist」。現在我不想從vragen - >類別(self.catagorie - 1) - >問題。這8個項目。但數組保持空白。從plist中讀取多個數組

我在做什麼錯?

代碼:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
NSString *documentsDirectory = [paths objectAtIndex:0]; 
NSString *path = [documentsDirectory stringByAppendingPathComponent:@"instellingen.plist"]; 
NSMutableDictionary *instellingen = [NSMutableDictionary dictionaryWithContentsOfFile:path]; 

NSArray *vragen = [instellingen objectForKey:@"vragen"]; 

NSArray *cata = [vragen objectAtIndex: (self.catagorie-1)]; 
NSArray *question = [cata objectAtIndex: 0]; 
NSLog(@"count: %i", [question count]); 

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>vragen</key> 
    <array> 
     <array> <--catagorydata 
      <array> <-- questiondata 
       <string>vraag</string> 
       <string>A</string> 
       <string>B</string> 
       <string>C</string> 
       <string>D</string> 
       <string>1</string> 
       <string>standaard</string> 
       <string></string> 
      </array> 
      <array> 
       <string>vraag2</string> 
       <string>A</string> 
       <string>B</string> 
       <string>C</string> 
       <string>D</string> 
       <string>1</string> 
       <string>afbeelding</string> 
       <string>afbeelding.jpg</string> 
      </array> 
     </array> 
    </array> 
    <key>firstBoot</key> 
    <true/> 
    <key>regelAtRuntime</key> 
    <true/> 
</dict> 
</plist> 
+0

是可變字典,你得到零(instellingen ==零)? – Alex

+0

當我計算根我得到2作爲結果。當我想深入時,結果爲0。 –

+1

不應''[vragen objectAtIndex:self.catagorie - 1]'和'[cata objectAtIndex:0]'交換? (以及必要的修改,當然......) – 2013-01-23 16:08:43

回答

2

所有這條線

NSString *path = [documentsDirectory stringByAppendingPathComponent:@"instellingen.plist"]; ? 

首先應該是

NSString *path = [documentsDirectory stringByAppendingPathComponent:@"settings.plist"]; 

我也不得不從字典中刪除這些:

<--catagorydata 
<-- questiondata 

除了上述的兩件事情,你的代碼或你的字典沒有錯。
進行這些更改後,我測試你的代碼,我得到的輸出是:

tester[69637:c07] size of dict 3 
tester[69637:c07] count: 8 

根據的.plist文件

這是正確的所以你的問題是在第一次4行。確保您的文件是文件目錄(使用類似下面的代碼,看看怎麼回事錯)

NSLog(@"Path : %@",path); 

我複製項目文件夾中的文件(因爲我用的模擬器),並用下面的代碼,一切工作很好

NSBundle* b=[NSBundle mainBundle]; 
NSURL* path1=[b URLForResource:@"settings" withExtension:@"plist"]; 
NSMutableDictionary *instellingen = [NSMutableDictionary dictionaryWithContentsOfURL:path1]; 

NSLog(@"size of dict %d",[instellingen count]); 

NSArray *vragen = [instellingen objectForKey:@"vragen"]; 

NSArray *cata = [vragen objectAtIndex: 0]; 
NSArray *question = [cata objectAtIndex: 0]; 
NSLog(@"count: %i", [question count]); 
+0

謝謝,主要問題是文檔文件夾中的plist過時了。我必須刪除應用程序並重新安裝它。 –

0

只是一個快速的讀取,但看起來你有 「categoryData」 項的數組,它包含的questionData項的數組; questionData項是字符串。

NSArray *vragen = [instellingen objectForKey:@"vragen"]; // count = 1 
NSArray *cata = [vragen objectAtIndex: (self.catagorie-1)]; // count = 2 
NSString *question = [cata objectAtIndex: 0]; 

建議您添加一些斷點並查看您的數據。 OR,NSLog(@「data =%@」,cata);等