Swift:'使用未解析的标识符' - 如何更改变量并在不同的函数中使用该变量?

时间:2014-07-22 00:32:03

标签: swift

我需要让我创建的这个按钮(一个蓝色按钮)改变我在代码中另一个代码块中创建和使用的变量(名为playerMark)。

以下是引入和使用playerMark的地方:

func setImgforCircle(spot:Int, player:Int) {
        var playerMark = player == 1 ? "Red_x" : "Red_o"

    plays[spot] = player
    switch spot {
    case 1:
        circle1.image = UIImage(named: playerMark)
    case 2:
        circle2.image = UIImage(named: playerMark)
    case 3:
        circle3.image = UIImage(named: playerMark)
    case 4:
        circle4.image = UIImage(named: playerMark)
    case 5:
        circle5.image = UIImage(named: playerMark)
    case 6:
        circle6.image = UIImage(named: playerMark)
    case 7:
        circle7.image = UIImage(named: playerMark)
    case 8:
        circle8.image = UIImage(named: playerMark)
    case 9:
        circle9.image = UIImage(named: playerMark)

    default:
        circle2.image = UIImage(named: playerMark)
    }

}

我有一个名为blueBtnClicked的IBAction连接到我需要执行的蓝色按钮:

playerMark = player == 1 ? "Blue_x" : "Blue_o"

但是控制台没有“记住”变量(playerMark和播放器),我得到了错误,'使用未解析的标识符'。这是blueBtnClicked块:

@IBAction func blueBtnClicked(sender: UIButton) {
        gameboard.image = UIImage(named: "Blue_gb")
        resultsView.image = UIImage(named: "Blue_results")
        colorsView.image = UIImage(named: "Blue_Colors")
        colorsBtn.setTitleColor(UIColor.lightTextColor(), forState: UIControlState.Normal)
        resetBtn.setTitleColor(UIColor.lightTextColor(), forState: UIControlState.Normal)
    }

点击某些按钮后,如何更改playerMark变量?因为我是Swift的新手,请详细解释所有答案。

1 个答案:

答案 0 :(得分:1)

问题是您正在尝试访问不在范围内的变量。目前,playerMark变量的范围是setImgforCircle函数,这意味着只能在setImgforCircle中访问playerMark。

解决方案可以是将函数外部的playerMark变量定义为类变量,如下所示:

var playerMark: String?

问号使此变量成为可选项,因此您无需直接指定值(该值现在为零)

为playerMark分配一个值,你可以简单地说

playerMark = player == 1 ? "Red_x" : "Red_o" 

您不需要使用var。

再次定义它

现在,var可以在班级的任何地方使用。您可以使用playerMark!来阅读它 那里的感叹号意味着“我知道这个价值可以是零,但无论如何都要给我价值”。

处理playerMark的nil值的安全方法是:

if playerMark {
   //access playerMark!
} else {
   // playerMark has no valid value, do something else
}

为了更好地了解swift,我建议在iBooks上免费阅读Apple的“The Swift Programming Language”