2015-12-01 23 views
5
class ViewController: UIViewController {  

let fortuneArray = ["You will find true love in the summer.", "Outlook not good", "You may find great success in business soon.", "Watch out for grey cats."] 
let randomIndex = Int(arc4random_uniform(fortuneArray.count)) 

override func viewDidLoad() { 
    super.viewDidLoad() 
    let randomIndex = Int(arc4random_uniform(UInt32(fortuneArray.count))) 
    print("random index: ") 
    print(randomIndex) 
    // 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. 
} 

// actions 
@IBAction func cookiePressed(sender: AnyObject) { 
    fortune.text = fortuneArray[randomIndex] 

} 

Sto creando una semplice applicazione dire di fortuna in Swift e io continuo a correre in problemi con arc4random_uniform. Attualmente sto solo cercando di ottenere l'applicazione per disegnare una stringa a caso ma ottengo un errore che dice: membromembro di istanza non può essere utilizzato su tipo 'ViewController'

grado 'fortuneArray' non può essere utilizzato su tipo 'ViewController'

sulla linea dove sto dichiarando la variabile randomIndex. Ho usato Google per un po 'ma non ho trovato una soluzione. Spero che qualcuno possa aiutarti, grazie!

* Aggiornamento * Problema risolto! Grazie.

+0

sono queste righe all'interno di un metodo come 'viewDidLoad' o appena definito nella classe? – Fonix

+0

Se la risposta di Fonix ti ha aiutato, devi accettarla facendo clic sul segno di spunta accanto ad essa. – Adrian

risposta

10

Se il codice incollato non è definito in un metodo come viewDidLoad, non è possibile utilizzare una variabile definita a livello di classe per un'altra variabile definita anche a livello di classe. Queste variabili sono determinate in fase di esecuzione e l'ordine con cui vengono determinate non è noto, quindi fortuneArray potrebbe non esistere prima che venga eseguito randomIndex (potrebbe non funzionare in questo modo dietro le quinte ma in questo modo si può pensare in questo modo)

dovresti calcolare queste variabili all'interno di viewDidLoad o init o qualche altra funzione invece

+0

Grazie, è utile. Sto usando 'randomIndex' in un IBAction però. Forse avrei dovuto pubblicare più del mio codice ma se dichiaro la variabile in viewDidLoad come hai detto tu, posso solo usarla all'interno di quel campo, credo. –

+0

Ho aggiunto altro codice per semplificare le cose. –

+0

Non puoi dichiarare le variabili 'lazy' come descritto da Martin R in questa risposta? http://stackoverflow.com/questions/25854300/how-to-initialize-properties-that-depend-on-each-other – Crashalot

0

Ah, l'ho capito con l'aiuto di Fonix. Ho dichiarato il numero casuale in un IBAction e questo si è preso cura di esso.

Problemi correlati