我有一个需要在我的ViewControllers之间共享的全局变量。
在Objective-C中,我可以定义一个静态变量,但我找不到在Swift中定义全局变量的方法。
你知道一种方法吗?
答案 0 :(得分:171)
来自swift编程guide
全局变量是在any之外定义的变量 函数,方法,闭包或类型上下文。全局常数和 变量总是懒惰地计算
您可以在任何文件中定义它,并可以在任何地方的当前module
中访问它。
所以你可以在任何范围之外的文件中的某个地方定义它。不需要static
,并且所有全局变量都是懒惰计算的。
var yourVariable = "someString"
您可以从当前模块的任何位置进行访问。
但是你应该避免这种情况,因为全局变量不适合应用程序状态,主要是错误原因。
如此answer所示
在swift中,您可以将它们封装在struct
中,并且可以在任何地方访问。
您也可以在swift中定义静态变量或常量。封装在struct
struct MyVariables {
static var yourVariable = "someString"
}
您可以在任何类或任何地方使用此变量
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
答案 1 :(得分:15)
使用private关键字可以限制在任何方法或闭包之外定义的全局变量。
import UIKit
// MARK: Local Constants
private let changeSegueId = "MasterToChange"
private let bookSegueId = "MasterToBook"
答案 2 :(得分:2)
如果要在所有课程中使用它,可以使用:
public var yourVariable = "something"
如果只想使用一个类,则可以使用:
var yourVariable = "something"