访问的plist阵列/节点 - 目标C [重复](Accessing Plist Arrays /

2019-10-17 04:43发布

这个问题已经在这里有一个答案:

  • 访问plist文件数组中的字符串值? 2个回答

我有我使用存储的问题和答案数据的属性列表文件。 在这个文件中我有阵列的集合,在这些我存储的不同类别和问题。 不过,我似乎无法访问该数据?

属性文件;

<?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"];

Answer 1:

你的财产清单有字典作为根对象,而不是一个数组。

拆下顶部这些行:

<dict>
<key>Category1</key>

而这条线从结尾:

</dict>

此外,关注@缪拉的意见,并得到你的文件,而不是一个普通字符串的正确道路。

一般来说,像这样的问题,调试器是你的朋友。 将一个断点在你的方法,并在每个阶段(导出路径,提取阵列)什么值你得到了检查。



Answer 2:

您应该提供arrayWithContentsOfFile:与完整路径plist文件。 下面应该工作:

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"questions" ofType:@"plist"];
categories = [NSArray arrayWithContentsOfFile:filePath];


文章来源: Accessing Plist Arrays / Nodes - Objective C [duplicate]