Tengo una variable global que debe compartirse entre mis ViewControllers.
En Objective-C, puedo definir una variable estática, pero no puedo encontrar una manera de definir una variable global en Swift.
¿Conoces alguna forma de hacerlo?
Tengo una variable global que debe compartirse entre mis ViewControllers.
En Objective-C, puedo definir una variable estática, pero no puedo encontrar una manera de definir una variable global en Swift.
¿Conoces alguna forma de hacerlo?
Respuestas:
De la guía de programación oficial de Swift :
Las variables globales son variables que se definen fuera de cualquier función, método, cierre o contexto de tipo. Las constantes y variables globales siempre se calculan de forma perezosa.
Puede definirlo en cualquier archivo y puede acceder a él en module
cualquier lugar actual . Entonces puede definirlo en algún lugar del archivo fuera de cualquier ámbito. No es necesario static
y todas las variables globales se calculan de forma perezosa.
var yourVariable = "someString"
Puede acceder a esto desde cualquier lugar del módulo actual.
Sin embargo, debe evitar esto ya que las variables globales no son buenas para el estado de la aplicación y principalmente son la razón de los errores.
Como se muestra en esta respuesta , en Swift puede encapsularlos struct
y puede acceder a ellos desde cualquier lugar. También puede definir variables estáticas o constantes en Swift. Encapsular enstruct
struct MyVariables {
static var yourVariable = "someString"
}
Puedes usar esta variable en cualquier clase o en cualquier lugar.
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
MyVariables
, por lo que MyViewState
parece un error de copiar / pegar de stackoverflow.com/a/24868789/1187415 :)
Las variables globales que se definen fuera de cualquier método o cierre pueden tener un alcance restringido utilizando la palabra clave privada.
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
si quieres usarlo en todas tus clases puedes usar:
public var yourVariable = "something"
si desea usar solo en una clase, puede usar:
var yourVariable = "something"