2014-11-05 15 views
8

Sto gestendo lingue diverse, in una piccola applicazione a riquadro singolo, utilizzando un diverso array di stringhe per ogni commento, indicizzato da una variabile intera "userLang", quindi impostando l'etichetta .text = array [indice]. Il codice di base è:Swift: errore di dichiarazione atteso impostazione "Etichetta" su una variabile stringa

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. 
    } 
} 

Continuo a ricevere un errore "Dichiarazione previsto". Ho provato a utilizzare una semplice stringa tra virgolette (anziché l'array) come test e ottenere ancora lo stesso errore. Ho cercato sul web & non trovato alcun suggerimento che risolva il problema. Ho provato a cambiare il nome se l'etichetta, nel caso in cui stavo usando riferimenti "riservati".

Ho cercato il manuale dello sviluppatore di Apple per Swift & Impossibile trovare la sintassi corretta per le etichette. Questa sintassi ha funzionato in altri progetti, quindi non sono sicuro di cosa sta succedendo. Ho anche provato a copiare/incollare le sezioni rilevanti in un nuovo progetto (uno dei suggerimenti online, in caso di bug Xcode), senza risultati migliori. Ho notato che piccole differenze (uno spazio o un capitale) possono fare una grande differenza in Swift. C'è qualcosa che sto facendo di sbagliato qui? Eventuali suggerimenti?

risposta

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

Queste non sono le dichiarazioni, sarà necessario spostarli viewDidLoad() o qualche altro luogo appropriato. La tua sintassi per le etichette va bene, ma hai il codice nel posto sbagliato nella classe.

+1

Grazie! Quello che dici ha un senso intuitivo. L'impostazione dei campi dell'etichetta sono assegnazioni, non dichiarazioni e devono essere parte di un'azione/funzione. Temporaneamente, ho aggiunto un pulsante, l'ho trascinato nel codice come azione, ho inserito tutte le assegnazioni di etichetta al suo interno e l'errore è scomparso: il codice viene compilato correttamente. Alla fine, lo inserirò in una vista di selezione, ma sto ancora imparando la sintassi per quello (un po 'più complicato). – Rob