在Xcode中传递.Swift文件之间的数据

时间:2015-07-03 09:07:33

标签: ios xcode swift

我是swift的新手,我在Xcode 7 Beta中有一个项目,我有扩展文件等。我的项目中有3个.swift文件(不适用于视图控制器),我想定义一个变量或者在其中一个中保持不变,并访问整个项目。例如,在First.swift中定义一个var,并在Second或Third.swift文件中访问它。我知道Xcode中的NSUserDefaults,但我不想使用它。 我也知道我如何在viewcontrollers之间传递数据(使用prepareforsegue等) 但我想在.swift文件之间传递数据。

3 个答案:

答案 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中,您都可以访问变量。

相关问题