所以我面临两个问题:
我正在尝试从数组中获取一个随机元素。我找到了这种方式:
var cards = [1, 2, 3, 4, 5, 6, 7, 8, 9]
var randomCard = Int(arc4random_uniform(UInt32(cards.count)))
但是,我收到两个错误:
"Expected ',' separator"
"Expected expression in list of expressions".
我做错了什么?
第二个问题如下:
我有UIButtons
命名card1
、card2
、card3
等。
有没有办法使用与randomCard
对应的按钮?例如,对于图像,有:
UIImage(named: String (format: "card_%i_%i", y, b))
我没有意识到您正在将这些作为存储属性声明提供。您遇到的麻烦是,在声明存储属性时,无法访问同一类中的另一个属性 - self.cards
当时不存在。
执行此操作的几种方法是将第二个属性标记为 lazy
,因此在创建实例之前不会计算表达式,或者将其创建为计算属性,每次访问时都会获取值:
class ViewController: UIViewController {
// stored property:
var cardsArray = [1, 2, 3]
// lazy property:
lazy var cardCount: Int = self.cardsArray.count
// computed property:
var randomCard: Int {
return Int(arc4random_uniform(UInt32(self.cards.count)))
}
}
您可以使用 if 语句来测试什么是随机数,然后根据其上的哪个按钮更改按钮背景。例如,您可以执行以下操作:
if randomCard == 1 {
//run some code
} else if randomCard == 2 {
//run some other code
}
依此类推,直到你得到所有的值。