Я новичок в Swift и не могу понять это.Я создаю простое приложение викторины, где вопросы приходят из файла JSON.Я могу успешно проанализировать эти данные, но не могу понять, как пройтись по файлу json, чтобы показать каждый вопрос.В настоящее время отображается только первый вопрос, и при выборе ответа он показывает ответ как правильный / неправильный и ничего больше.Я хотел бы, чтобы следующий вопрос заполнялся из файла json, как только пользователь ответит на вопрос, но я не могу понять, как это сделать.Это код, который у меня есть.
private func parseJSON() {
guard let path = Bundle.main.path(forResource: "quizQuestions", ofType: "txt") else { return }
let url = URL(fileURLWithPath: path)
do {
let data = try Data(contentsOf: url)
let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers)
guard let array = json as? [Any] else { return }
for item in array {
guard let quizObjects = item as? [String: Any] else { return }
guard let questionNumber = quizObjects["id"] as? Int else { print("not an Int"); return }
guard let question = quizObjects["question"] as? String else { return }
guard let answerChoices = quizObjects["answerChoices"] as? [String] else { return }
guard let correctAnswer = quizObjects["correctAnswer"] as? Int else { return }
}
}
catch {
print(error)
}
}
Я включил функцию loadNextQuestion, чтобы вы увидели, что я пытаюсь сделать.Раньше у меня были все вопросы, жестко запрограммированные в быстром объекте, так что это работало, но сейчас я пытаюсь извлечь из файла json.Главное, с чем я борюсь, это как определить текущий вопрос и позицию, чтобы заставить эту логику работать.
func loadNextQuestion() {
// Show next question
if(currentQuestionPos + 1 < currentQuestion.count) {
currentQuestionPos += 1
currentQuestion = question
setQuestion()
}
// If there are no more questions show the results
else {
}
}
Вот файл json, из которого я извлекаю:
[
{
"id": 1,
"question": "What color is the sky?",
"answerChoices": ["Green", "White", "Blue", "Brown"],
"correctAnswer": 2
},
{
"id": 2,
"question": "What color is the grass?",
"answerChoices": ["Pink", "Green", "Purple", "Orange"],
"correctAnswer": 0
},
{
"id": 3,
"question": "Which of these has 8 legs?",
"answerChoices": ["Spider", "Lizard", "Cricket", "Snake"],
"correctAnswer": 0
},
]