wyx wyx - 6 months ago 13
iOS Question

cannot assign to value 'colorTouched' is a 'let' constant

beginner of swift, follow the book and get the error ""

here is the code:

@IBAction func buttonTouched(sender : UIButton) {
var buttonTag : Int = sender.tag

if let colorTouched = ButtonColor(rawValue: buttonTag) {
if currentPlayer == .Computer {
return
}

//error here:
if colorTouched = inputs[indexOfNextButtonToTouch] {
indexOfNextButtonToTouch += 1

if indexOfNextButtonToTouch == inputs.count {
// 玩家成功地完成了这一轮
if advanceGame() == false {
playerWins()
}
indexOfNextButtonToTouch = 0
}
else {
}
}
else {
playerLoses()
indexOfNextButtonToTouch = 0
}
}
}


so if I cannot use "if let colorTouched", what should I do with it?

Answer

You should be using == for comparison instead of = (which is assignment):

@IBAction func buttonTouched(sender : UIButton) {
    var buttonTag : Int = sender.tag

    if let colorTouched = ButtonColor(rawValue: buttonTag) {
        if currentPlayer == .Computer {
            return
        }


    // note double equals
    if colorTouched == inputs[indexOfNextButtonToTouch] {
    ...