在 swift class 的静态函数中访问非静态常量
Accessing non static constant in static function of swift class
我是 swift 的新手。我想在静态函数中使用 none swift class 的静态成员,下面是我的代码。我无法在静态函数中访问 class 的 none 静态成员。有没有办法在 swift 函数中访问非静态成员?
public class Test{
private let testString:String
init(test:String){
testString = test
}
static func Get(url:String){
//Here testString is not accessable..
}
}
不,没有办法在静态函数中访问非静态变量。不过,您可以创建 class 的静态实例(一种创建单例的方式)并访问其 testString 变量。
有两种方法可以达到这样的效果。正如@Alexander 所述,您可以像单例一样创建 class 的静态实例并使用它。
你可以做的另一种方法是像我最近做的一个简单的技巧,你可以有一个静态版本的变量。我所做的是听取我的实例变量将使用信号进行的更改。如果你没有为你的变量覆盖 getter (KVO 兼容),你可以对 KVO 做同样的事情,或者只要你改变你的实例变量就设置静态变量,尽管你必须基于闭包(Block in OBJC)否则,它是一个比从未见过的大圆圈。
每当您的实例变量的值发生变化时,您只需将相同的更改应用于您的静态变量,并且在静态函数中需要时,您只需使用静态变量。
如果您不习惯使用 KVO 或 React,您也可以做其他事情。您可以为您的实例变量覆盖 getter 和 setter 并将它们都设置为文件或 UserDefaults 并且还创建一个静态方法并覆盖 getter 以使用与相同的密钥读取文件您的实例变量,这样您就不必在每次发生变化时都设置静态变量。
我是 swift 的新手。我想在静态函数中使用 none swift class 的静态成员,下面是我的代码。我无法在静态函数中访问 class 的 none 静态成员。有没有办法在 swift 函数中访问非静态成员?
public class Test{
private let testString:String
init(test:String){
testString = test
}
static func Get(url:String){
//Here testString is not accessable..
}
}
不,没有办法在静态函数中访问非静态变量。不过,您可以创建 class 的静态实例(一种创建单例的方式)并访问其 testString 变量。
有两种方法可以达到这样的效果。正如@Alexander 所述,您可以像单例一样创建 class 的静态实例并使用它。 你可以做的另一种方法是像我最近做的一个简单的技巧,你可以有一个静态版本的变量。我所做的是听取我的实例变量将使用信号进行的更改。如果你没有为你的变量覆盖 getter (KVO 兼容),你可以对 KVO 做同样的事情,或者只要你改变你的实例变量就设置静态变量,尽管你必须基于闭包(Block in OBJC)否则,它是一个比从未见过的大圆圈。 每当您的实例变量的值发生变化时,您只需将相同的更改应用于您的静态变量,并且在静态函数中需要时,您只需使用静态变量。
如果您不习惯使用 KVO 或 React,您也可以做其他事情。您可以为您的实例变量覆盖 getter 和 setter 并将它们都设置为文件或 UserDefaults 并且还创建一个静态方法并覆盖 getter 以使用与相同的密钥读取文件您的实例变量,这样您就不必在每次发生变化时都设置静态变量。