我被Swift 3中的变量声明卡住了。我的代码是这样的:
代码起始
// Letter Buttons
@IBOutlet weak var LetterOneButton: UIButton!
@IBOutlet weak var LetterTwoButton: UIButton!
@IBOutlet weak var LetterThreeButton: UIButton!
@IBOutlet weak var LetterFourButton: UIButton!
@IBOutlet weak var LetterFiveButton: UIButton!
// Word Fields
@IBOutlet weak var WordLetterOne: UILabel!
@IBOutlet weak var WordLetterTwo: UILabel!
@IBOutlet weak var WordLetterThree: UILabel!
@IBOutlet weak var WordLetterFour: UILabel!
@IBOutlet weak var WordLetterFive: UILabel!
// Counter
@IBOutlet weak var CounterLabel: UILabel!
// Skip Button
@IBOutlet weak var SkipButtonLabel: UIButton!
// Define Variables
var index: Int = 0
错误出现在下一行:
var labels: [UILabel] = [WordLetterOne, WordLetterTwo, WordLetterThree, WordLetterFour, WordLetterFive]
错误信息是"不能在属性初始化器中使用实例成员'WordLetterOne';属性初始化器在'self'可用之前运行"。然后,声明另一个字符串,没有任何问题。
var letters: [String] = ["A", "B", "C", "D", "E"]
代码结束
和帮助是非常感谢!
编辑:
self.lazy var labels: [UILabel] = [WordLetterOne, WordLetterTwo, WordLetterThree, WordLetterFour, WordLetterFive]
给出了错误"一行上的连续声明必须用';'分隔"one_answers"实例成员'WordLetterOne'不能用于类型'ViewController'"
就像它说的:当运行时构建数组初始化器时,你试图放入数组的属性还没有定义(因为self
还没有准备好)
尝试使属性静态(取决于您的实际情况)。或者——初始化init
方法中的labels
数组。
letters
的定义是可以的,因为"A"、"B"等都是常量。