在ViewController.swift中-我在类的开头声明了一个惰性var游戏,但仍然收到错误
无法在属性初始化程序中使用实例成员'cardButtons';属性初始化程序在“自我”可用之前运行
import UIKit
class ViewController: UIViewController {
lazy var game = Concentration(numberOfPairsOfCards: (cardButtons.count + 1) / 2)
@IBOutlet var cardButtons: [UIButton]!
var emojiChoices = ["🍆", "💩", "🍆", "💩" ]
@IBAction func touchCard(_ sender: UIButton) {
flipCount += 1
if let cardNumber = cardButtons.index(of: sender) {
flipCard(withEmoji: emojiChoices[cardNumber], on: sender)
} else {
print("Chosen card not in cardButtons")
}
}
}
这是类“集中”,我正在尝试创建一个实例
进口基金会
class Concentration {
var cards = [Card]()
init(numberOfPairsOfCards: Int) {
for _ in 1...numberOfPairsOfCards {
let card = Card()
cards += [card, card]
}
}
}
最佳答案
这看起来像是斯坦福大学最近的iOS课程中的示例项目。无论如何,您的惰性变量的语法看起来不正确。
更改
lazy var game = Concentration(numberOfPairsOfCards: (cardButtons.count + 1)/2)
至
lazy var game : Concentration = {
return Concentration(numberOfPairsOfCards: (cardButtons.count + 1)/2)
}()
但是,访问另一个变量(cardButtons.count)的值虽然在当前代码中可能很好,但是如果在引用游戏之前尚未初始化cardButtons,则稍后可能会出现问题。