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