如何创建全局变量?

时间:2014-10-04 17:25:55

标签: swift global-variables

我有一个需要在我的ViewControllers之间共享的全局变量。

在Objective-C中,我可以定义一个静态变量,但我找不到在Swift中定义全局变量的方法。

你知道一种方法吗?

3 个答案:

答案 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"