我在应用程序运行时有一个简单的布局,只允许用户输入一些文本,如果文本是正确的,分数计数器将保存收到的数据,而不是再次运行for循环
@IBAction func checkAnswer(sender: AnyObject) {
while canAdd {
if output.text == "hi" {
canAdd = false
rightOrWrong.text = "Right!"
scoreTotal += 1
count.text = String(scoreTotal)
} else {
canAdd = true
rightOrWrong.text = "Try again!"
}
}
}
最简单的方法是什么?
由于
答案 0 :(得分:0)
正如您的代码现在所示,如果用户输入错误的数字,您的循环将无数次执行,因为canAdd
总是等于真。
我认为你误解了while循环的目的...... while循环将继续执行一遍又一遍,而不会暂停或等待用户输入,只要满足某个条件,所以你的当前while循环可以每秒运行数千次,因此可能会阻止用户交互并可能导致程序崩溃。
如果您只想在每次按下按钮时得分增加/不增加,则不需要使用while循环。如果有条件,只需将您的canAdd条件添加到当前条件即可。我认为这就是你要做的事情:
@IBAction func checkAnswer(sender: AnyObject) {
if output.text == "hi" && canAdd == true {
canAdd = false
rightOrWrong.text = "Right!"
scoreTotal += 1
count.text = String(scoreTotal)
} else {
canAdd = true
rightOrWrong.text = "Try again!"
}
}