我的目标是每次用户拨号6时增加累积奖金计数器。 我已经尝试过使用for in循环:
class ViewController: UIViewController {
@IBOutlet weak var numberDisplayLabel: UILabel!
@IBOutlet weak var jackpotCountLabel: UILabel!
@IBAction func diceRollBtn(_ sender: UIButton) {
var count = 0
let randomNumber = arc4random_uniform((10)+1)
if randomNumber == 6 {
numberDisplayLabel.text = "Jackpot!!! You got \(randomNumber)!"
for count in 0..==6 {
jackpotCountLabel.text = "Jackpot count: \(count)"
}
} else {
numberDisplayLabel.text = "Unlucky! Maybe next time."
}
}
但似乎我不能使用==
作为操作符来检查条件。
for循环是否适合这样的任务?
答案 0 :(得分:2)
有几点:
即使它始终等于6,也会显示\(randomNumber)
。
没有这样的运算符...... ==。
count
似乎是累积奖金数量的计数,但每次按下该按钮时总是设置为零。 count
变量需要存储在函数外部,并在每次调用函数时递增,然后才会显示给用户。
我建议进行以下更改......
var count = 0
@IBAction func diceRollBtn(_ sender: UIButton) {
let randomNumber = arc4random_uniform((10)+1)
if randomNumber == 6 {
numberDisplayLabel.text = "Jackpot!!! You got 6!"
count += 1
jackpotCountLabel.text = "Jackpot count: \(count)"
} else {
numberDisplayLabel.text = "Unlucky! Maybe next time."
}
}
答案 1 :(得分:2)
与Vince的答案基本相同,但使用属性观察者didSet
代替。在某些情况下,当您总是希望在标签中显示最新的变量值时,使用此功能可能非常方便,并且您不希望在更改变量的任何位置添加label.text = "new string"
。
var count = 0 {
didSet {
self.jackpotCountLabel.text = "Jackpot count: \(count)"
}
}
var randomNumber: UInt32 = 0 {
didSet {
if randomNumber == 6 {
numberDisplayLabel.text = "Jackpot!!! You got \(randomNumber)!"
count += 1
return
}
numberDisplayLabel.text = "Unlucky! Maybe next time."
}
}
@IBAction func diceRollBtn(_ sender: UIButton) {
randomNumber = arc4random_uniform((10)+1)
}