Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift:';未解析标识符的使用';-如何更改变量并在不同函数中使用该变量?_Swift - Fatal编程技术网

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

Swift:';未解析标识符的使用';-如何更改变量并在不同函数中使用该变量?,swift,Swift,我需要让我创建的这个按钮(一个蓝色按钮)改变一个变量(名为playerMark),该变量是我之前在代码中的另一个代码块中创建和使用的 这里介绍并使用了playerMark: func setImgforCircle(spot:Int, player:Int) { var playerMark = player == 1 ? "Red_x" : "Red_o" plays[spot] = player switch spot { case 1:

我需要让我创建的这个按钮(一个蓝色按钮)改变一个变量(名为
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)
    }

}
我有一个名为
bluebtn的iAction连接到我需要执行的蓝色按钮上:

playerMark = player == 1 ? "Blue_x" : "Blue_o"
但是控制台没有“记住”变量(playerMark和player),我得到了错误“使用未解析标识符”。下面是
块:

@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新手

问题是您试图访问的变量不在范围内。当前,playerMark变量的作用域是setImgforCircle函数,这意味着playerMark只能在setImgforCircle中访问

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

var playerMark: String?
问号使该变量成为可选变量,因此不需要直接赋值(该值现在为零)

要为playerMark指定一个值,您可以简单地说

playerMark = player == 1 ? "Red_x" : "Red_o" 
您不需要使用var再次定义它

现在,var在您的类中的任何位置都可用。您可以使用
playerMark阅读它
感叹号的意思是“我知道这个值可以是零,但无论如何给我这个值”

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

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

为了更好地理解swift,我建议阅读苹果公司在iBooks上免费提供的《swift编程语言》

谢谢你对我的帮助。我以同样的方式初始化了一个名为
blueBtn
的布尔值,并使iAction将其设置为false,然后在我的
setImgForCircle
函数中的if-else语句中将其用作if部分(
if-blueBtn==false
),但无论如何,else部分都会执行。发生了什么事?请阅读swift中的“optionals”。首先通过'if-blueBtn{if-bluebBtn!==“somestring”}else{}检查blueBtn是否为nil