gpt4 book ai didi

Swift: 'use of unresolved identifier' - 如何更改变量并在不同函数中使用该变量?

转载 作者:可可西里 更新时间:2023-11-01 02:28:27 27 4
gpt4 key购买 nike

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

@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?

问号使这个变量成为可选的,这样你就不需要直接赋值了(现在的值是nil)

要为 playerMark 赋值,您可以简单地说

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

你不需要用var再次定义它。

现在这个 var 在你类(class)的任何地方都可用。您可以使用 playerMark! 阅读它那里的感叹号表示“我知道这个值可以为零,但还是给我这个值”。

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

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

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

关于Swift: 'use of unresolved identifier' - 如何更改变量并在不同函数中使用该变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24877041/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com