Извлечь данные из пронумерованной переменной, используя цикл в swift - PullRequest
0 голосов
/ 07 июня 2018

У меня есть база данных областей.Так что база данных более читабельна.Я спроектировал банк вопросов следующим образом:

class Question: Object {
    @objc dynamic var id: Int = 0
    @objc dynamic var name: String = ""
    @objc dynamic var answered: Bool = false
    @objc dynamic var lastAnswer: Bool = false
    @objc dynamic var howManyTimesAnswered: Int = 0
    @objc dynamic var answer0: String = ""
    @objc dynamic var answer1: String = ""
    @objc dynamic var answer2: String = ""
    @objc dynamic var answer3: String = ""
    @objc dynamic var correctAnswer: Int = 0
    let parentCategory = LinkingObjects(fromType: Category.self, property: "questions") //back relationship to category
}

Я пытаюсь извлечь ответы и поместить их в массив кортежей (String, Bool)

 var currentAnswers = [(String, Bool)]()
    for i in 0...3 {
        if i == question.correctAnswer {
            currentAnswers.append(("question.answer2", true))
        } else {
            currentAnswers.append((question.answer1, false))
        }
    }

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

    for i in 0...3 {
        if i == question.correctAnswer {
            currentAnswers.append((question.answer(i), true))
        } else {
            currentAnswers.append((question.answer(i), false))
        }
    }

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Вы можете использовать Путь ключа Попробуйте этот код

  var currentAnswers = [(String, Bool)]()
    for i in 0...3 {
        if i == question.correctAnswer {
            currentAnswers.append((question.value(forKey: "answer\(i)") as! String, true))
        } else {
            currentAnswers.append((question.value(forKey: "answer\(i)") as! String, false))
        }
    }
0 голосов
/ 07 июня 2018

Мне удалось обойти это.Только одна строка дополнительного кода.Надеюсь, это поможет, если кто-то захочет добиться чего-то подобного.

    var currentAnswers = [(String, Bool)]()
    let answers = [question.answer0, question.answer1, question.answer2, question.answer3]

    for i in 0...3 {
        if i == question.correctAnswer {
            currentAnswers.append((answers[i], true))
        } else {
            currentAnswers.append((answers[i], false))
        }
    }

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

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