/ / Swift: Variable d'accès à partir d'autres classes [duplicate] - swift, static-members

Swift: variable d'accès à partir d'autres classes [duplicate] - swift, static-members

J'essaie d'accéder à une variable définie dans unclasse de deux autres viewControllers. En Java, je définirais la variable comme statique pour pouvoir y accéder en tant que variables.varOne. Puisque les variables de classe dans Swift ne fonctionnent pas actuellement, y a-t-il un moyen d'y parvenir?

(Exemple de code)

class variables
{
var varOne = 1
}

class viewController1
{
func addTwo() //Linked to a button
{
variables.varOne += 2
}
}

class viewController2
{
func addThree //Linked to a button
{
variables.varOne += 3
}
}

Merci d'avance pour l'aide!

Réponses:

3 pour la réponse № 1

Oui, les variables de classe ne sont pas supportées. Vous pouvez utiliser une "propriété de type" dans une structure.

Définissez vos "variables" comme une structure plutôt que comme une classe.

struct variables {
static var varOne: Int = 1
}

2 pour la réponse № 2

Comme il n’existe pas de variable de classe disponible, une option que vous pouvez faire est de singleton et accéder à ces variables par singletonLes singletons ont une implémentation thread-safe. Une autre alternative est de définir struct avec static variable

class variables {
//Singleton specific implementation
class var sharedInstance: variables {
struct Static {
static var instance: variables?
static var token: dispatch_once_t = 0
}

dispatch_once(&Static.token) {
Static.instance = variables()
}

return Static.instance!
}



var varone = 1

}
class viewController1
{
func addTwo() //Linked to a button
{
variables.sharedInstance.varOne += 2
}
}

class viewController2
{
func addThree //Linked to a button
{
variables.sharedInstance.varOne += 3
}
}

Alors maintenant, vous pouvez accéder à votre variable à n’importe quelle classe avec les mêmes états modifiés par d’autres classes. Mise en œuvre de la structure

    struct variables {
static var varone = 1
}

Avec cela, vous pouvez accéder à partir d'une autre classe