ios - 从 plist 刷新数据

标签 ios xcode loops plist ibaction

我试图根据数组中的项目数量从 plist 创建一个循环,这是我的 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">
<array>
<dict>
    <key>question</key>
    <string>2 + 2 = ?</string>
    <key>A</key>
    <string>2</string>
    <key>B</key>
    <string>4</string>
    <key>C</key>
    <string>3</string>
    <key>Ans</key>
    <string>B</string>
</dict>
<dict>
    <key>question</key>
    <string>2 + 4 = ?</string>
    <key>A</key>
    <string>3</string>
    <key>B</key>
    <string>6</string>
    <key>C</key>
    <string>9</string>
    <key>Ans</key>
    <string>B</string>
</dict>
</array>
</plist>

所以我的数组中有两项。我希望屏幕加载第一个项目并显示它,然后使用界面中的按钮再次显示屏幕和第二个项目列表

- (void)viewDidLoad
{
[super viewDidLoad];
rootArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"question" ofType:@"plist"]];
currentQuestion = -1;
[self showNextQuestion];
}
-(void) showNextQuestion{
    currentQuestion++;
    int numItems = [rootArray count];
    NSMutableArray *question = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *A = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *B = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *C = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *CorrectAns = [NSMutableArray arrayWithCapacity:numItems];

for (NSDictionary *itemData in rootArray) {
    [question addObject:[itemData objectForKey:@"question"]];
    [A addObject:[itemData objectForKey:@"A"]];
    [B addObject:[itemData objectForKey:@"B"]];
    [C addObject:[itemData objectForKey:@"C"]];
    [CorrectAns addObject:[itemData objectForKey:@"Ans"]];
    self.questionasked.text =question[currentQuestion];
    self.answer1.text = A[currentQuestion];
    self.answer2.text = B[currentQuestion];
    self.answer3.text = C[currentQuestion];

    }
}

我知道我必须创建某种循环并使用一个 Action ,但我不知道如何

最佳答案

您已经在 rootArray 中获得了所有内容,因此您无需使用 NSMutableArrays 执行所有这些操作。只需做类似的事情

NSDictionary *item = rootArray[currentQuestion];
self.questionasked.text = item[@"question"];
self.answer1.text = item[@"A"];

并设置一个调用[self showNextQuestion]的UIButton;当你点击它时。

关于ios - 从 plist 刷新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15013341/

相关文章:

ios - AVFoundationAudioSettings 的设置 AVAudioTimePitchAlgorithmVarispeed

iOS解析JSON中找到的img标签

ios - 启动图像未出现在 iPhone 上

ios - 尝试解析 JSON 以在应用程序中显示图像

javascript - 每个输入字母在单独的行中返回

java - 如果给出无效响应,请重新运行 main 方法?

php - ForEach循环: Output something different on every second result

ios - CBCentralManager.retrieveConnectedPeripherals() 返回哪些设备?

iphone - 导致崩溃的通知监听器

iOS 13/14 模态视图 Controller 解除检测