2014-11-05 11 views
8

Zarządzam różnymi językami, w małej aplikacji z pojedynczą szybą, przy użyciu różnych tablic ciągów dla każdego komentarza, indeksowanych przez zmienną całkowitą "userLang", a następnie ustawiania etykiety .text = array [indeks]. Podstawowy kod to:Swift: oczekiwany błąd deklaracji ustawienie "Etykieta" zmiennej łańcuchowej

import UIKit 
class ViewController: UIViewController { 
    var userLang = 0 
    var arrayOne = ["hi", "hola"] 
    var arrayTwo = ["Bye", "Adios"] 
    @IBOutlet weak var msgArrayOne: UILabel! 
    @IBOutlet weak var msgArrayTwo: UILabel! 

    msgArrayOne.text = arrayOne[userLang] //Error here: !Expected declaration 
    msgArrayTwo.text = arrayTwo[userLang] //odd, but this line gets no error until I 
              //remove the first line above, then 
              //this line gets the same error. 

    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    } 

    override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
    } 
} 

Występuje błąd "Oczekiwana deklaracja". Próbowałem używać prosty ciąg w cudzysłowach (zamiast tablicy) jako test, i nadal otrzymuję ten sam błąd. Przeszukałem sieć & nie znaleziono żadnych sugestii, które rozwiązałyby problem. Próbowałem zmienić nazwę, jeśli etykieta, na wypadek, gdy używałem referencji "zarezerwowanych".

Szukałem instrukcji programisty Apple'a dla Swift &, nie mogę znaleźć właściwej składni dla etykiet. Ta składnia działała w innych projektach, więc nie jestem pewien, co się dzieje. Próbowałem nawet skopiować/wkleić odpowiednie sekcje do nowego projektu (jedna z sugestii online, w przypadku błędu Xcode), bez lepszych rezultatów. Zauważyłem, że niewielkie różnice (przestrzeń lub kapitał) mogą sprawić dużą różnicę w Swift. Czy jest tu coś, co robię źle? Jakieś sugestie?

Odpowiedz

22
msgArrayOne.text = arrayOne[userLang] 
msgArrayTwo.text = arrayTwo[userLang] 

To nie są deklaracje, musisz przenieść je do viewDidLoad() lub innego odpowiedniego miejsca. Twoja składnia etykiet jest w porządku, ale kod jest w niewłaściwym miejscu w klasie.

+1

Dziękujemy! To, co mówisz, ma sens intuicyjny. Ustawienie pól etykiety to przypisania, a nie deklaracje i muszą być częścią akcji/funkcji. Tymczasowo dodałem przycisk, przeciągnąłem go do kodu jako akcję, umieściłem wszystkie przypisane etykiety wewnątrz niego, a błąd zniknął - kod kompiluje się pomyślnie. W końcu wstawię go do widoku próbnika, ale wciąż uczę się składni tego (nieco bardziej skomplikowanego). – Rob

Powiązane problemy