我正在快速制作测验游戏,但我遇到了一个问题。我的RandomQuestionGenerator函数似乎没有改变我的correctAnswer变量。我通过将if correctAnswer == 1更改为correctAnswer == 0以及按下按钮运行时的代码来测试此项。我猜有一个愚蠢的明显解决方案,但我无法弄明白。
var correctAnswer = 0
func RandomQuestionGenerator(){
var randomQuestion =
Int(arc4random_uniform(UInt32(fullQuestions.count)))
var currentQuestion = fullQuestions[randomQuestion]
var correctAnswer = currentQuestion.answer
Label.text = currentQuestion.Question
Button1.setTitle(currentQuestion.answers[0], for: .normal)
Button2.setTitle(currentQuestion.answers[1], for: .normal)
Button3.setTitle(currentQuestion.answers[2], for: .normal)
Button4.setTitle(currentQuestion.answers[3], for: .normal)
fullQuestions.remove(at: randomQuestion)
}
override func viewDidAppear(_ animated: Bool) {
appendQuestions()
RandomQuestionGenerator()
}
@IBAction func Button1Pressed(_ sender: Any) {
if correctAnswer == 1{
RandomQuestionGenerator()
}
}
答案 0 :(得分:1)
正如OOPer所说,行var currentQuestion = fullQuestions[randomQuestion]
不会重新分配变量,它会“遮蔽”全局变量。这意味着在函数的范围内,就好像您有一个具有相同名称的单独变量一样。退出函数时,变量将恢复为您在开头声明的值。要重新分配变量,请使用currentQuestion = fullQuestions[randomQuestions]
,因为它不会影子,只需重新分配变量
但是,这可能不是你的问题。我注意到在currentQuestion.answers
数组中,您有四个值,索引为0,1,2和3.但是,您将按钮命名为1,2,3和4.看起来这就是为什么if语句是if correctAnswer == 1
。如果在这种情况下第一个答案是正确答案,并且currentQuestion.answer可以是1,2,3或4,那可能是您的问题。如果这是您的问题,可以通过将button语句if correctAnswer = 0
替换为button1'correctAnswer = 1
for button2来修复if语句,依此类推
希望这有帮助!