J'ai une variable globale qui doit être partagée entre mes ViewControllers.
En Objective-C, je peux définir une variable statique, mais je ne trouve pas le moyen de définir une variable globale dans Swift.
Connaissez-vous un moyen de le faire?
De Swift programmation guide
Les variables globales sont des variables définies en dehors de tout contexte de fonction, de méthode, de fermeture ou de type. Les constantes globales et les variables sont toujours calculées paresseusement
Vous pouvez le définir dans n’importe quel fichier et y accéder dans la version courante module
n’importe où. Vous pouvez donc le définir quelque part dans le fichier en dehors de toute portée. static
n'est pas nécessaire et toutes les variables globales sont calculées paresseusement.
var yourVariable = "someString"
et vous pouvez accéder de n'importe où dans le module actuel.
Cependant, vous devriez éviter cela car les variables globales ne sont pas bonnes pour l'état de l'application et principalement la cause des bogues.
Comme indiqué dans ce réponse Dans Swift, vous pouvez les encapsuler dans struct
et accéder à n’importe où. Vous pouvez également définir des variables statiques ou des constantes dans Swift. Encapsuler dans struct
struct MyVariables {
static var yourVariable = "someString"
}
Vous pouvez utiliser cette variable dans n'importe quelle classe ou n'importe où
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
Les variables globales définies en dehors de toute méthode ou clôture peuvent être soumises à une restriction de portée à l'aide du mot clé private.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
si vous voulez l'utiliser dans toutes vos classes, vous pouvez utiliser:
public var yourVariable = "something"
si vous souhaitez utiliser uniquement dans une classe, vous pouvez utiliser:
var yourVariable = "something"