我正在创建一个应用程序,从52张牌中选择两张随机牌。然后,如果其中一张牌很强(在我的情况下,强牌是“10”或更强)我希望它显示图像“是”(勾号)。如果两张牌都很弱,那么我希望它显示图像“不”(交叉)。我一直试图找到一个问题,但每次我改变一些东西时,都会出现一种新的错误。
我试图在func resultOfShuffle中设置一个未知的输出类型,我尝试创建并为我的UIImageView命名一个插座几次。
let cardArray = ["1.png", (...), "52.png"]
// All of the cards, from 2 to Ace (with every color). Number "33" is a card 10.
...
let cardResults = ["yes.png"]
...
@IBOutlet weak var theResult: UIImageView!
...
func randomizeCards() {
chooseCardOne = Int.random(in: 0 ... 51)
chooseCardTwo = Int.random(in: 0 ... 51)
...
func resultOfShuffle(firstCard : Int, secondCard : Int) -> UIImageView {
if firstCard > 33 {
return theResult.image = UIImage(named: cardResults)
}
}
现在,返回最后一个func resultOfShuffle是错误的 - 告诉我:使用未解析的标识符'theResult'。我也试图找到这个问题的解决方案,但它有点棘手,我不明白。
这就是我的应用程序的样子:
每个声明都是在同一个ViewController
中执行的吗?它应该认识theResult
作为UIImageView
。
问题是,在评论中解决的,基于函数声明的范围。由于它是在定义theResult
的类之外声明的,因此无法访问它。
解决方案可以将变量作为参数传递给函数,或者在变量的相同范围内声明函数 - 在ViewController
中。
无论如何,你试图用这一行返回一些东西:
theResult.image = UIImage(named: cardResults)
它没有评估类型,只是简单地将视图的图像设置为cardResults
中的内容。因此,您不应该返回任何内容,而只是使用此函数来更新视图的内容 - 这意味着您应该使用Void
返回类型。
此外,你传递给[String]
类型的图像初始化器,而你应该通过一个String
。
尝试这样的事情:
func resultOfShuffle(firstCard : Int, secondCard : Int) {
if firstCard > 33 {
theResult.image = UIImage(named: cardResults[0])
}
}