1

我想通过它的键来获取数组值。

我在 looping 中用下面的代码设置了数组。

let que = Question(questionText: "\(questionWord)", options: quizAnsArr, correctAns: correctArrIndex, wrongAns: -1, isAnswered: false)

        quizsArray += [que]

现在我得到下面的数组。这是我的数组。

[Kanji_Quiz.Question(questionText: "青", options: ["fast", "color", "heart", "blue"], correctAns: 3, wrongAns: -1, isAnswered: false), Kanji_Quiz.Question(questionText: "暑", options: ["owner", "heart", "hot (temperature)", "end"], correctAns: 2, wrongAns: -1, isAnswered: false)]

我通过使用调用值

print(quizsArray[questionText])

但它'显示错误。我如何通过索引或 smth 调用值。请帮我。

4

2 回答 2

2

@Kawazoe Kazuke

quizsArray 的类型是 [Question]... 对吗?

所以通过这样做: print(quizsArray[questionText]),你要求你的程序进入quizsArray: [Question]并获得索引等于 的值questionText

我不明白那不应该 出错

如果您不想将 quizsArray 从 [Question] 更改为原生 Swift Dictionary ([String:Any]),那么您需要执行以下操作:

• 遍历quizsArray。像这样的东西应该可以完成这项工作:

    for question in quizsArray {
        <code>
    }

• 只有现在您才能访问每个问题。所以:

    for question in quizsArray {
        let text = question.getQuestionText()
        if text.elementsEqual('questionText') {
            let correctAnswerIndex = question.getQuestionAnswerIndex()
            print(question.getQuestionAnswer(correctAnswerIndex))
        }
    }

• 请注意,该方法getQuestionAnswer(index: Int)只是getQuestionAnswerIndex()我编造的方法。您必须在创建 Question 类/结构的地方编写“getter and setter”代码

• 所以最后,您应该将所有代码转换为函数,其中参数将是(关键)问题文本,并且函数返回正确答案,甚至返回整个对象。然后你会被设置

于 2018-04-25T09:42:50.893 回答
0

首先,您应该找到 questionText 的索引,然后打印该元素:

if let index = quizsArray.index(of: questionText) {
    print(quizsArray[index])
}

但我建议你使用字典而不是数组,你可以轻松地在字典中实现你想要的。

于 2018-04-23T05:48:54.463 回答