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 de moyen de définir une variable globale dans Swift.
Connaissez-vous un moyen de le faire?
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 de moyen de définir une variable globale dans Swift.
Connaissez-vous un moyen de le faire?
Réponses:
Extrait du guide de programmation officiel Swift :
Les variables globales sont des variables définies en dehors de tout contexte de fonction, méthode, fermeture ou type. Les constantes et variables globales sont toujours calculées paresseusement.
Vous pouvez le définir dans n'importe quel fichier et y accéder en courant module
n'importe où. Vous pouvez donc le définir quelque part dans le fichier en dehors de toute portée. Il n'y a pas besoin de static
et toutes les variables globales sont calculées paresseusement.
var yourVariable = "someString"
Vous pouvez y accéder de n'importe où dans le module actuel.
Cependant, vous devez éviter cela car les variables globales ne sont pas bonnes pour l'état de l'application et principalement en raison de bogues.
Comme indiqué dans cette réponse , dans Swift, vous pouvez les encapsuler struct
et y accéder n'importe où. Vous pouvez également définir des variables statiques ou des constantes dans Swift. Encapsuler dansstruct
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"
MyVariables
, cela MyViewState
ressemble donc à une erreur de copier / coller de stackoverflow.com/a/24868789/1187415 :)
Les variables globales définies en dehors de toute méthode ou fermeture peuvent être restreintes à la portée à l'aide du mot clé private.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
si vous souhaitez l'utiliser dans toutes vos classes, vous pouvez utiliser:
public var yourVariable = "something"
si vous souhaitez utiliser une seule classe, vous pouvez utiliser:
var yourVariable = "something"