XMLパーサーから抽出された次の辞書があります。github ライブラリを使用して、この次のリンクから XML ファイルを解析しました。
XML から NSDictionary へのパーサー ライブラリ
Quiz = {
questions = (
{
"@id" = 1;
answer = D;
A = "Under the rock";
B = "Trees";
C = "Mountain";
D = Water;
question = "Where does the fish live?";
},
{
"@id" = 2;
answer = D;
A = "Four";
B = "Two";
C = "Six";
D = Three;
question = "How many legs for a rabbit?";
},......
};
キーの質問、回答、オプション 1 ~ 4 のオブジェクトを取得しようとしています。しかし、どうにかして値を渡すことができません。
for (NSString * key in xmlDictionary) {
NSDictionary * subDict = [xmlDictionary objectForKey:@"questions"];
NSLog(@"Correct Answers \n\n%@", [subDict objectForKey:@"answer"]);
// all your other code here.
}
値が返されているとは思わない。実際には、その xml 内に 10 個の要素があり、解析中に 10 個の要素があることが示されます。ただし、xmlDictionary をカウントしようとすると、1 が返されます。ここで何が問題なのかわかりませんか?
また、@id に依存するすべての値を抽出するにはどうすればよいですか?
混乱している!!!
更新: XML ファイルで ... タグを ... に変更しました
NSDictionary *currentObject;
if (rowIndex < countXML)
{
currentObject=[muteArr objectAtIndex:rowIndex];
}
else
{
[self performSegueWithIdentifier:@"simple" sender:self];
}
NSString *questionLbl = [currentObject objectForKey:@"question"];
NSString *op1Lbl = [currentObject objectForKey:@"A"];
NSString *op2Lbl = [currentObject objectForKey:@"B"];
NSString *op3Lbl = [currentObject objectForKey:@"C"];
NSString *op4Lbl = [currentObject objectForKey:@"D"];
NSString *answer = [currentObject objectForKey:@"answer"];
NSString *questNoLbl = [currentObject objectForKey:@"@ID"];
questionID.text = [@"Question # " stringByAppendingString:questNoLbl];
question.text = questionLbl;
[answer1 setTitle:op1Lbl forState:UIControlStateNormal];
[answer2 setTitle:op2Lbl forState:UIControlStateNormal];
[answer3 setTitle:op3Lbl forState:UIControlStateNormal];
[answer4 setTitle:op4Lbl forState:UIControlStateNormal];
これで、各質問を取得して QuizViewController に表示する方法を含むこのコードができました。ユーザーがボタンを押すと、新しいコントローラーにセグエし、答えが正しいかどうかを表示し、ResultViewController の [続行] ボタンをクリックすると QuizViewController に戻ります。これで、これらすべてのセットアップが完了しました。
ResultViewController で答えが正しいかどうかを表示するようになりました。