Swift:从其他类访问变量

时间:2014-07-19 16:19:01

标签: swift static-members

我试图从另外两个viewControllers访问一个类中定义的变量。在java中,我将变量设置为static,然后我可以将其作为variables.varOne访问。由于Swift中的类变量目前无法正常运行,有没有办法实现这一目标?

(示例代码)

class variables
{
   var varOne = 1
}

class viewController1
{
   func addTwo() //Linked to a button
   {
      variables.varOne += 2
   }
}

class viewController2
{
   func addThree //Linked to a button
   {
      variables.varOne += 3
   }
}

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

是的,不支持类变量。您可以使用"类型属性"在一个结构中。

定义你的"变量"作为一个结构,而不是一个类。

struct variables {
    static var varOne: Int = 1
}

答案 1 :(得分:2)

由于没有可用的类变量,您可以做的一个选项是singleton并通过singleton访问这些变量。单例具有线程安全实现。另一种选择是定义{{ 1}} struct变量

static

现在,您可以将您的变量访问到其他类更改了相同状态的任何类。 结构实施

class variables {
   //Singleton specific implementation
    class var sharedInstance: variables {
    struct Static {
        static var instance: variables?
        static var token: dispatch_once_t = 0
        }

        dispatch_once(&Static.token) {
            Static.instance = variables()
        }

        return Static.instance!
    }



    var varone = 1

}
class viewController1
{
   func addTwo() //Linked to a button
   {
      variables.sharedInstance.varOne += 2
   }
}

class viewController2
{
   func addThree //Linked to a button
   {
      variables.sharedInstance.varOne += 3
   }
}

有了这个,您可以从其他课程

访问