如何找出在setSet / didSet中更新元组的哪个变量?

时间:2015-10-10 23:06:10

标签: swift tuples

如何在willSet / didSet中找出元组的哪个变量更新?

var myTuple: (a: Int, b: Int) {
   didSet {
      // Which one was set, a or b?
   }
}

2 个答案:

答案 0 :(得分:3)

实际上,您会使用willSet获取更新后的值,并使用桥接到newValue.a.b)的元组属性访问内容:

var myTuple: (a: Int, b: Int) {
    willSet {
        print(newValue.a)
        print(newValue.b)
    }
}

你可以比较这样的值,例如:

var myTuple: (a: Int, b: Int) {
    willSet {
        if newValue.a != myTuple.a {
            print(".a changed")
        }
        if newValue.b != myTuple.b {
            print(".b changed")
        }
    }
}

答案 1 :(得分:1)

你可以像这样检查oldValue

    var myTouple: (a: Int, b: Int) {
   didSet {
      print(oldValue.a)
      print(oldValue.b)
   }
}

并比较它们。如果您只设置了一个touple值,例如

myTouple.a = 5

就好像你设置了所有,其余的就像你写的那样得到了旧的价值

myTouple = (5, myTouple.b)