如何在swift中实现单例

如何在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

我试图在多个视图和多个对话框中保存布尔值。我认为使用单例是答案。我设置了singleton类,但它仍然没有保持该值。 这是我开设的单身班

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
或其他任何地方。所以请检查这个变量


希望我能帮忙

不相关,但请注意,方法和变量名称应以小写字母开头。类和结构名称以大写字母开头。不相关的名称可能重复,但请注意,方法和变量名称应以小写字母开头。类和结构名称以大写字母开头。可能与