0

以下のplistから8つのアイテムを取得することはできません。plist「settings.plist」があります。今、私は vragen -> カテゴリ(self.catagorie - 1)-> 質問に行きたくありません。8項目です。しかし、配列は空のままです。

私は何を間違っていますか?

コード:

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

2 に答える 2

2

まずはこのライン

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

する必要があります

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

これらも辞書から削除する必要がありました。

<--catagorydata
<-- questiondata  

上記の 2 つの点以外に、コードや辞書に問題はありません。
これらの変更を行った後、コードをテストしたところ、得られた出力は次のとおりです。

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

.plist ファイルによると正しい

したがって、問題は最初の 4 行にあります。ファイルが Documents ディレクトリにあることを確認してください (次のコードのようなものを使用して、何が問題なのかを確認してください)。

    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]);
于 2013-01-23T17:36:22.080 に答える
0

ちょっと読んだだけですが、questionData項目の配列を含む「categoryData」項目の配列があるようです。questionData 項目は文字列です。

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

いくつかのブレークポイントを追加して、データを確認することをお勧めします。または、NSLog(@"データ = %@"、カタ); 等

于 2013-01-23T16:14:36.200 に答える