У меня есть простое приложение для викторины, которое я начал разрабатывать, и я хотел бы сохранить прогресс пользователей, если приложение принудительно завершается и снова открывается.
У меня есть класс с именем 'Question', который состоит из переменных Strings и одного перечисления с именем 'Film' с тремя падежами. Я создал вопросы, а затем добавить эти вопросы в массив.
В самом коде я гарантировал, что после того, как вопрос задан, он вынимается из моего массива 'allQuestions', а затем добавляется в новый массив 'usedQuestions'.
То, что я хочу сделать, - это сохранить мой массив 'usedQuestions' и затем иметь возможность загружать эти вопросы по мере загрузки приложения.
Я исследовал использование UserDefaults, но похоже, что это невозможно, и я также рассмотрел использование CoreData, но в настоящее время пытаюсь заставить это работать.
//Class:
class Question {
var questionBody: String
var correctAnswer: String
var wrongAnswer: String
var wrongAnswerTwo: String
var wrongAnswerThree: String
let filmTitle: Film
enum Film {
case one, two, three
}
let firstQuestion = Question(questionBody: "This is question one", correctAnswer: "Correct", wrongAnswer: "Wrong Answer", wrongAnswerTwo: "Wrong Answer Two", wrongAnswerThree: "Wrong Answer Three", filmTitle: ".one"
let secondQuestion = Question(questionBody: "This is question Two", correctAnswer: "Correct", wrongAnswer: "Wrong Answer", wrongAnswerTwo: "Wrong Answer Two", wrongAnswerThree: "Wrong Answer Three", filmTitle: ".two"
let thirdQuestion = Question(questionBody: "This is question Three", correctAnswer: "Correct", wrongAnswer: "Wrong Answer", wrongAnswerTwo: "Wrong Answer Two", wrongAnswerThree: "Wrong Answer Three", filmTitle: ".three"
let allQuestions = [firstQuestion, secondQuestion, thirdQuestion]
//Code:
var usedQuestions = [Question]()
var storedQuestion = Question(questionBody: "", correctAnswer: "", wrongAnswer: "", wrongAnswerTwo: "", wrongAnswerThree: "", filmTitle: .one)
func saveQuestionAsked(storedQuestion: Question) {
let savedQuestion = storedQuestion
usedQuestions.insert(savedQuestion, at: 0)
}
let chosenQuestion = Int(arc4random_uniform(UInt32(allQuestions.count)))
storedQuestion = allQuestions[chosenQuestion]
saveQuestionAsked(storedQuestion: allQuestions[chosenQuestion])
allQuestions.remove(at: chosenQuestion)
С помощью вышеприведенного кода я удалил хранимую часть из массива allQuestions, а затем вставил ее в массив usedQuestion.
Теперь я хочу иметь возможность сохранять вопросы в этом массиве, чтобы, когда пользователь возвращается, эти вопросы все еще существовали в этом массиве.