2016-09-25 8 views
2

ich bei einer Variablendeklaration in Swift bin stecken 3. Mein Code sieht wie folgt aus:Swift 3: var Etiketten definieren: [UILabel] nicht

Anfang Code

// 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 

Der Fehler erscheint in der folgenden Zeile:

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

Fehlermeldung "ist nicht Instanz Mitglied‚WordLetterOne‘im Eigentum initializer verwenden kann; Eigenschaft i nitializers laufen, bevor 'self' verfügbar ist ". Danach wird ein weiterer String ohne Probleme deklariert.

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

Ende Code

Und Hilfe ist sehr willkommen!

Edit:

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

die Fehler „Aufeinander folgende Erklärungen auf einer Linie müssen getrennt werden‚‘“ wird zu geben und „Instance Mitglied‚WordLetterOne‘verwendet werden kann, nicht auf Typ‚Viewcontroller‘“

+0

Die Fehlermeldung hat bereits erklärt, was falsch ist. Was ist deine Frage? –

+0

Ich weiß nicht, wie Sie den Fehler beheben können. @CezaryWojcik – Janninho

+0

Verwenden Sie keine Eigenschaften in einem Eigenschaftsinitialisierer. Die Fehlermeldung besagt "Sie können das nicht", also lautet die Lösung, dies nicht zu tun. –

Antwort

0

Wie gesagt: Wenn die Laufzeit den Array-Initializer erstellt, sind die Eigenschaften, die Sie in das Array einfügen wollen, noch nicht definiert (weil self noch nicht fertig ist).

Versuchen Sie, die Eigenschaften statisch zu machen (hängt von Ihrer tatsächlichen Situation ab). Oder - initialisieren Sie das labels Array in der init Methode.

Die Definition von letters ist in Ordnung, weil "A", "B" usw. Konstanten sind.

+0

Vielen Dank! Können Sie mir ein Beispiel geben, wie genau das im oben genannten Fall aussehen würde? Vielen Dank im Voraus für Ihre Mühe! – Janninho

+0

Versuchen Sie @ Vacawama Vorschlag in den Kommentar (faul) - klingt wie eine sehr saubere Lösung (habe es nicht getestet). – noamtm

Verwandte Themen