我正在尝试创建一个类似于小测验的应用程序,在这个应用程序中,拿着电话的人问问题,其他人回答。所以会有两个字符串。一个有问题,一个有答案。我提出了这样的问题:
var questions = ["Question1", "Question2", "Question3", "Question4", "Question5"]
var answers = ["Answer1", "Answer2", "Answer3", "Answer4", "Answer5"]
当点击按钮时,会弹出一个具有正确答案的新问题。我知道如何从问题中显示随机字符串,但如何将其连接起来以显示正确的答案?
发布于 2020-05-13 12:45:31
另一种选择是使用Dictionary
,问题作为Key
,答案作为Value
let questions: [String : String] = [
"Question1" : "Answer1",
"Question2" : "Answer2",
"Question3" : "Answer3",
"Question4" : "Answer4",
"Question5" : "Answer5"
]
然后,您可以得到一个随机的问题&回答如下:
let randomQuestion = questions.randomElement()
然后访问问答文本:
let questionText = randomQuestion?.key ?? ""
let answerText = randomQuestion?.value ?? ""
关于您的下一个问题:,我如何确保同一个问题不会多次显示,以及当没有更多的问题时,
您可以像这样从Array
Dictionary
Keys
构造一个Keys
。这些钥匙无论如何都会乱七八糟的,但是如果你想重复的话,你应该洗牌。然后,您可以在随机数组中迭代每个问题:
在viewDidLoad
中设置属性,而不是当按钮被点击时。
let randomQuestions = questions.keys.shuffled()
var currentQuestionIndex = 0
@IBAction func newQuestionButton(_ sender: Any) {
guard currentQuestionIndex != questions.count else {
return
// or reset your questionIndex and reshuffle.
}
// This will give you the Question (and Key)
let question = randomQuestions[currentQuestionIndex]
// Use the Key to extract out the answer (value) from the Dictionary
let answer = questions[question] ?? ""
// Update your labels
questionLabel.text = question
answerLabel.text = answer
// Increment your question index
currentQuestionIndex += 1
}
发布于 2020-05-13 12:26:21
您可以简单地将zip
和questions
和answers
放在一起,然后对结果调用randomElement
。这将给出一个包含随机问题的Tuple
及其相应的答案-假设questions
和answers
的索引是同步的。
var questions = ["Question1", "Question2", "Question3", "Question4", "Question5"]
var answers = ["Answer1", "Answer2", "Answer3", "Answer4", "Answer5"]
let questionsAndAnswers = Array(zip(questions, answers))
let randomQA = questionsAndAnswers.randomElement()
发布于 2020-05-13 12:55:26
您可以创建类似的QuizItem
类型。由于您总是需要它们在一起,所以最好将它们绑定在一个元素中,而不是有两个数组。
struct QuizItem {
var question: String
var answer: String
}
然后创建并数组(或列表) [QuizItem]
,并添加所需的所有项。最后,您只需获取数组的随机元素。下面是一些伪代码:
var quizList = [QuizItem]()
quizList.append(...) // add questions & answers
let randomIndex = randomIndex between 0 and quizList.length-1
let item = quizList[randomIndex]
questionLable.text = item.question
answereLabel.text = item.answere
https://stackoverflow.com/questions/61774402
复制相似问题