如何在swift中实现单例
我试图在多个视图和多个对话框中保存布尔值。我认为使用单例是答案。我设置了singleton类,但它仍然没有保持该值。 这是我开设的单身班如何在swift中实现单例,swift,singleton,global-variables,Swift,Singleton,Global Variables,我试图在多个视图和多个对话框中保存布尔值。我认为使用单例是答案。我设置了singleton类,但它仍然没有保持该值。 这是我开设的单身班 class Singleton { static let instance = Singleton() var data: Bool = false; private init() { } func SetData(value: Bool){ data = value } func GetD
class Singleton {
static let instance = Singleton()
var data: Bool = false;
private init() { }
func SetData(value: Bool){
data = value
}
func GetData() -> Bool{
return data
}
}
这就是我想说的。
默认情况下,我将var设置为false。如果为true,则将用户数据设置为英制,如果为false,则将其设置为公制
//This is the function for the button that lets the user switch between the metric system and imperial system
@IBAction func switchMeasurements(_ sender: Any) {
var temperatureS: Float = Float(0)
var temperatureB: Float = Float(0)
var lakeDep: Float = Float(0)
isOn = Singleton.instance.GetData()
//Clicks the button, if isOn is true then we set the data to the imperial system.
isOn = !isOn
Singleton.instance.SetData(value: isOn)
if isOn {
....}
问题是,当他们单击以更改为Imperial,然后单击并从该视图移开并返回到该视图时,会将isOn重置为false并扰乱数据。我正试图让伊森去救人,所以当他们回来的时候,如果他们事先选择了帝国队的话,他们仍然会选择帝国队。如有任何提示/帮助,我们将不胜感激。您这样做的方式不够迅速
class Singleton {
static var shared = Singleton()
var data: Bool = fasle {
get { return data }
set { data = newValue }
}
}
接下来我不明白“卷土重来”是什么意思。如果您取消了此视图/将其切换到上一个视图,则问题在于您在设置子视图等时未在ViewDiLoad中设置isOn
状态。如果您按下某个ViewController并将其“返回”到切换器,那么您可以在某个地方更改共享标志状态,或者在viewdide上更改isOn
,viewwillbeen
或其他任何地方。所以请检查这个变量
希望我能帮忙 你做这件事的方式不快
class Singleton {
static var shared = Singleton()
var data: Bool = fasle {
get { return data }
set { data = newValue }
}
}
接下来我不明白“卷土重来”是什么意思。如果您取消了此视图/将其切换到上一个视图,则问题在于您在设置子视图等时未在ViewDiLoad中设置isOn
状态。如果您按下某个ViewController并将其“返回”到切换器,那么您可以在某个地方更改共享标志状态,或者在viewdide上更改isOn
,viewwillbeen
或其他任何地方。所以请检查这个变量
希望我能帮忙 不相关,但请注意,方法和变量名称应以小写字母开头。类和结构名称以大写字母开头。不相关的名称可能重复,但请注意,方法和变量名称应以小写字母开头。类和结构名称以大写字母开头。可能与