0

だから私はプログラミングが初めてで、何日もこれにこだわっています...ここに示すような配列があります

<?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>7</string>
    <key>C</key>
    <string>3</string>
</dict>
<dict>
    <key>question</key>
    <string>2 + 3 = ?</string>
    <key>A</key>
    <string>5</string>
    <key>B</key>
    <string>2</string>
    <key>C</key>
    <string>6</string>
</dict>
</array>
</plist>

次に、これらをそれぞれの配列に保存したいと思います。次に、ストーリーボードにそれぞれのラベルを作成し、各キーを別のラベルに割り当てたいと考えていますが、間違っているようです。これが私のコードです

- (void)showNextQuestion
{
    NSArray *rootArray = [NSArray arrayWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"question" ofType:@"plist"]];
    int numItems = [rootArray count];
    currentQuestion = -1;
    currentQuestion++;

    NSMutableArray *question = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *A = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *B = [NSMutableArray arrayWithCapacity:numItems];
    NSMutableArray *C = [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"]];

        self.questionasked.text =question;
        self.answer1.text = A;
        self.answer2.text = B;
        self.answer3.text = C;
    }
}

4 つのラベルは questionasked、answer1、answer2、answer3 です。適切に割り当てるにはどうすればよいですか

4

1 に答える 1

0

少なくとも、for ループから割り当てを削除し、次のように書き直す必要があります。

    self.questionasked.text =question[currentQuestion];
    self.answer1.text = A[currentQuestion];
    self.answer2.text = B[currentQuestion];
    self.answer3.text = C[currentQuestion];

ファイルを 1 回だけロードすることもお勧めします (showNextQuestion 呼び出しごとではなく)。

また、 の設定でcurrentQuestion=-1は、何度呼び出しても、最初の質問のみが表示されます。このステートメントをコンストラクターまたは一度だけ実行される場所に移動します。

于 2013-02-21T21:31:38.813 に答える