在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]
}
}
}
答案 0 :(得分:0)
这看起来像是斯坦福大学最近的iOS课程中的示例项目。无论如何,您的惰性变量的语法看起来不正确。
更改
lazy var game = Concentration(numberOfPairsOfCards: (cardButtons.count + 1)/2)
到
lazy var game : Concentration = {
return Concentration(numberOfPairsOfCards: (cardButtons.count + 1)/2)
}()
但是,访问另一个变量(cardButtons.count)的值,尽管在当前代码中可能还不错,但是如果在引用游戏之前尚未初始化cardButtons,则稍后可能会出现问题。