我是swift的新手,我在Xcode 7 Beta中有一个项目,我有扩展文件等。我的项目中有3个.swift文件(不适用于视图控制器),我想定义一个变量或者在其中一个中保持不变,并访问整个项目。例如,在First.swift中定义一个var,并在Second或Third.swift文件中访问它。我知道Xcode中的NSUserDefaults,但我不想使用它。 我也知道我如何在viewcontrollers之间传递数据(使用prepareforsegue等) 但我想在.swift文件之间传递数据。
答案 0 :(得分:1)
一种方法是将它们封装在struct
中,并且可以随处访问。
你也可以在swift中定义静态变量或常量。在struct
struct MyVariables {
static var yourVariable = "someString"
}
您可以在任何类或任何地方使用此变量:
let string = MyVariables.yourVariable
println("Global variable:\(string)")
//Changing value of it
MyVariables.yourVariable = "anotherString"
或者您可以声明可以在任何地方访问的全局变量。
来自HERE的参考。
答案 1 :(得分:0)
查看http://www.raywenderlich.com/86477/introducing-ios-design-patterns-in-swift-part-1
我们的想法是创建一个类的实例,并在文件/类的任何位置访问它。
如果您只需要共享常量,Dharmesh的解决方案就更简单了。
答案 2 :(得分:0)
您可以创建NSObject类的自定义子类。在那里声明所有变量。创建该类的对象的单个实例,并通过任何视图控制器中该类的对象访问变量。
class Singleton {
class var sharedInstance: Singleton {
struct Static {
static var onceToken: dispatch_once_t = 0
static var instance: Singleton? = nil
static var yourVariable = "someString"
}
dispatch_once(&Static.onceToken) {
Static.instance = Singleton()
}
return Static.instance!
}
}
然后在任何viewController中,您都可以访问变量。