Ho una variabile globale che deve essere condivisa tra i miei ViewController.
In Objective-C, posso definire una variabile statica, ma non riesco a trovare un modo per definire una variabile globale in Swift.
Conosci un modo per farlo?
Ho una variabile globale che deve essere condivisa tra i miei ViewController.
In Objective-C, posso definire una variabile statica, ma non riesco a trovare un modo per definire una variabile globale in Swift.
Conosci un modo per farlo?
Risposte:
Dalla guida ufficiale alla programmazione Swift :
Le variabili globali sono variabili definite al di fuori di qualsiasi funzione, metodo, chiusura o contesto di tipo. Le costanti e le variabili globali vengono sempre calcolate pigramente.
Puoi definirlo in qualsiasi file e puoi accedervi in corrente module
ovunque. Quindi puoi definirlo da qualche parte nel file al di fuori di qualsiasi ambito. Non è necessario static
e tutte le variabili globali vengono calcolate pigramente.
var yourVariable = "someString"
Puoi accedervi da qualsiasi punto del modulo corrente.
Tuttavia dovresti evitarlo poiché le variabili globali non sono buone per lo stato dell'applicazione e principalmente per la causa dei bug.
Come mostrato in questa risposta , in Swift puoi incapsularli struct
e puoi accedervi ovunque. Puoi anche definire variabili statiche o costanti in Swift. Incapsula instruct
struct MyVariables {
static var yourVariable = "someString"
}
Puoi usare questa variabile in qualsiasi classe o ovunque
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
MyVariables
, quindi MyViewState
sembra un errore di copia / incolla da stackoverflow.com/a/24868789/1187415 :)
È possibile limitare l'ambito delle variabili globali definite al di fuori di qualsiasi metodo o chiusura utilizzando la parola chiave private.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
se vuoi usarlo in tutte le tue classi puoi usare:
public var yourVariable = "something"
se vuoi usare solo in una classe puoi usare:
var yourVariable = "something"