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">
<dict>
<key>Category1</key>
<array>
    <array>
        <string>Question1</string>
        <string>Answer1</string>
    </array>
    <array>
        <string>Question2</string>
        <string>Answer2</string>
    </array>
    <array>
        <string>Question3</string>
        <string>Answer3</string>
    </array>
    <array>
        <string>Question4</string>
        <string>Answer4</string>
    </array>
</array>
</dict>
</plist>

下面我使用两个简单的按钮来访问属性列表文件;

-(IBAction)nextleft {
    [self bingsound];
    if (questionCounter > 1) {
        questionCounter -= 1;
    }
    [self nextQuestion];
}

-(IBAction)nextright {
    [self bingsound];
     if (questionCounter < 20) {
         questionCounter += 1;
     }
     [self nextQuestion];
}

-(void)nextQuestion {
    NSArray *pair;
    pair = [categories objectAtIndex:questionCounter];
    plistQuestion = [pair objectAtIndex:0];
    plistAnswer = [pair objectAtIndex:1];
    abbreviation.text = plistQuestion;
}

我正在填充类别数组,如下所示;

categories = [NSArray arrayWithContentsOfFile:@"questions.plist"];
4

2 回答 2

1

您应该提供arrayWithContentsOfFile:plist 文件的完整路径。以下应该有效:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"];
categories = [NSArray arrayWithContentsOfFile:filePath];
于 2012-08-23T23:13:26.660 回答
1

您的属性列表有一个字典作为根对象,而不是一个数组。

从顶部删除这些行:

<dict>
<key>Category1</key>

最后一行:

</dict>

此外,请遵循@murat 的建议并导出正确的文件路径而不是纯字符串。

一般来说,像这样的问题,调试器是你的朋友。在您的方法中放置一个断点,并在每个阶段(导出路径、提取数组)检查您得到的值。

于 2012-08-24T05:48:09.573 回答