在swift中更改var globaly

时间:2016-06-05 19:15:11

标签: swift global var

我想在我创建的swift文件中更改var的值:

class functions {

    var DataSent = "Sensor"

    func setValue (DataSent: String) {
      self.DataSent =  DataSent
    }

    func getValue () -> String {
        return self.DataSent
    }


}

当我调用setValue时,DataSent没有改变我能做什么?

我称之为:

functions().setValue(stringData)

然后我用getValue

将其调用到另一个类

2 个答案:

答案 0 :(得分:4)

每次致电functions时,您都会创建functions()的新实例。在这种情况下,最好使用struct static函数和静态变量。

struct functions {

    static var DataSent = "Sensor"

    static func setValue (DataSent: String) {
      self.DataSent =  DataSent
    }

    static func getValue () -> String {
        return self.DataSent
    }
}

print(functions.DataSent)
functions.setValue(DataSent: "Blaah")
print(functions.DataSent)

答案 1 :(得分:0)

我真的没有意识到为全局可变属性编写getter和setter方法的重点。但是,可能更好的选择是将getter和setter写为计算属性。

这看起来像这样:

class functions {
  private var _DataSent = "Sensor"

  var DataSent: String {
    get {
      return _DataSent
    }
    set {
      _DataSent = newValue //newValue is an apple keyword and represents the value, you want to assign to your property.
    }
  }

希望这有帮助, 欢呼声