我试图从另外两个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
}
}
提前感谢您的帮助!
答案 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
}
}
有了这个,您可以从其他课程
访问