循环中增加数量

时间:2017-05-22 08:07:13

标签: swift

我的目标是每次用户拨号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循环是否适合这样的任务?

2 个答案:

答案 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)
}

Swift 3.1 Properties