Как сохранить массив данных, к которым можно получить доступ при необходимости? - PullRequest
0 голосов
/ 15 января 2019

У меня есть простое приложение для викторины, которое я начал разрабатывать, и я хотел бы сохранить прогресс пользователей, если приложение принудительно завершается и снова открывается.

У меня есть класс с именем '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.

Теперь я хочу иметь возможность сохранять вопросы в этом массиве, чтобы, когда пользователь возвращается, эти вопросы все еще существовали в этом массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...