在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,则稍后可能会出现问题。

10-08 18:31