Objective c 从plist读取多数组

Objective c 从plist读取多数组,objective-c,cocoa-touch,plist,Objective C,Cocoa Touch,Plist,我无法从下面的列表中找到8项。 我有一个plist“settings.plist”。现在我想问的不是vragen->category(self.catagorie-1)->问题。这8个项目。但是数组保持为空 我做错了什么 代码: Plist文件: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTD

我无法从下面的列表中找到8项。 我有一个plist“settings.plist”。现在我想问的不是vragen->category
(self.catagorie-1)
->问题。这8个项目。但是数组保持为空

我做错了什么

代码:

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>

弗拉根

只是快速阅读,但看起来您有一个“categoryData”项数组,其中包含一个questionData项数组;问题数据项是字符串

NSArray *vragen = [instellingen objectForKey:@"vragen"]; // count = 1
NSArray *cata = [vragen objectAtIndex: (self.catagorie-1)]; // count = 2
NSString *question = [cata objectAtIndex: 0];
建议您添加一些断点并查看数据。或者,NSLog(@“数据=%@”,cata);等等。

首先是这一行

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

NSString *path = [documentsDirectory stringByAppendingPathComponent:@"settings.plist"];
我还必须从字典中删除以下内容:

<--catagorydata
<-- questiondata  
根据.plist文件,哪个是正确的

所以你的问题在前4行。确保您的文件位于Documents目录中(使用类似于以下代码的代码查看出了什么问题)

我复制了项目文件夹中的文件(因为我使用了模拟器),并使用了以下代码,一切正常

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]);

是得到nil(instellingen==nil)的可变字典吗?当我计算根时,结果是2。当我想深入研究时,结果是0。是否应该交换
[vragen objectAtIndex:self.catagorie-1]
[cata objectAtIndex:0]
?(当然还有必要的修改…)谢谢,主要问题是文档文件夹中的plist已过时。我不得不删除应用程序并重新安装。
tester[69637:c07] size of dict 3  
tester[69637:c07] count: 8  
    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]);