2016-09-25 27 views
2

我被困在斯威夫特3.變量聲明我的代碼如下所示:斯威夫特3:定義VAR標籤:[的UILabel]失敗

的代碼

// 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’;屬性我nitializers在'self'可用之前運行「。之後,另一個字符串被聲明沒有任何問題。代碼

,並幫助

var letters: [String] = ["A", "B", "C", "D", "E"] 

到底是高度讚賞!

編輯:

self.lazy var labels: [UILabel] = [WordLetterOne, WordLetterTwo, WordLetterThree, WordLetterFour, WordLetterFive] 

是給錯誤「上一個線必須被分開連續聲明‘;’」和

「實例構件‘WordLetterOne’不能對類型‘的ViewController’用的」
+0

錯誤消息已經解釋了什麼是錯誤的。你的問題是什麼? –

+0

我不知道如何解決錯誤,@CezaryWojcik – Janninho

+0

不要在屬性初始值設定項中使用屬性。該錯誤消息說「你不能這樣做」,所以解決方法是不這樣做。 –

回答

0

就像這樣說:當運行時建立數組initalizer時,你試圖放入數組的屬性還沒有定義(因爲self還沒有準備好)。

嘗試使屬性爲靜態(取決於您的實際情況)。 或者 - 在init方法中初始化labels數組。

letters的定義是可以的,因爲「A」,「B」等是常量。

+0

謝謝!你能否舉一個例子來說明上述情況究竟會如何?預先感謝您的努力! – Janninho

+0

在評論(懶惰)中試用@ vacawama的建議 - 聽起來像一個非常乾淨的解決方案(沒有測試過)。 – noamtm