【发布时间】:2016-09-25 18:32:27
【问题描述】:
我被 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]
给出错误“一行上的连续声明必须用';'分隔”和“实例成员'WordLetterOne'不能用于类型'ViewController'”
【问题讨论】:
-
错误信息已经说明了问题所在。你有什么问题?
-
我不知道如何解决这个错误,@CezaryWojcik
-
不要在属性初始化器中使用属性。错误消息说“你不能这样做”,所以解决办法是不要这样做。
-
计算属性。或者将 array 设为
@IBOutlet并删除编号变量。 -
将其定义为惰性:
lazy var labels: [UILabel] = [self.WordLetterOne, self.WordLetterTwo, self.WordLetterThree, self.WordLetterFour, self.WordLetterFive]
标签: ios swift xcode swift3 variable-declaration