Sono nuovo in fretta. Mi piacerebbe chiederti se vado nel modo giusto.
Ho qualcosa di simile a questo:
class ViewController: UIViewController {
struct myVars {
var static short_text = ""
}
override func viewDidLoad() {
super.viewDidLoad()
loadData()
println(short_text)
}
func loadData() {
myVars.short_text = "Hello world!"
}
}
Questo codice funziona. Ho "Ciao mondo!" stringa nella variabile e posso stamparlo. Ma ti sto chiedendo se questo è un modo valido e chiaro per ridefinire la variabile statica? Lo faccio perché voglio lavorare con questa variabile attraverso il codice.
Grazie per le tue risposte.
PS: I metodi finali sono molto più difficili. Questo è un codice in cortocircuito solo per esempio.
risposte:
1 per risposta № 1Se il tuo intento è di rendere la variabile per questa istanza di ViewController
accessibile ad altre classi (ad esempio altri controller di vista), quindi non è necessario utilizzare static
. Hai solo bisogno di usare static
se è fondamentale rendere la proprietà accessibile attraverso più istanze di quella classe. Non penso che sia quello che intendevi qui.
Se l'intento è di passare i dati tra i controller della vista, ti suggerisco di fare riferimento a:
Come si condividono i dati tra i controller di visualizzazione e altri oggetti in Swift?
Come passi i dati tra i controller di visualizzazione in Swift?
Se cerchi "dati di passaggio tra i controller di visualizzazione", troverai molti altri collegamenti simili.
Linea di fondo, l'uso di static
è possibile, ma probabilmente non è quello che intendevi.
Due note a margine:
Stai usando un
static
all'interno di astruct
. Swift 1.2 ovvia alla necessità di tale modello. Se hai davvero bisognostatic
(e non credo che ne hai bisogno qui), puoi semplicemente dichiarare la tua variabile comestatic
ed eliminare ilstruct
:static var shortText = ""
Non penso al tuo uso di
struct
significava aprire la discussione "by-value vs by-reference", ma se lo facessi, potrei riferirti al video del WWDC 2015 Creazione di app migliori con tipi di valore in Swift.