0

我有一个数组,有多个值。我想检测其中一个值是否已更改,如下所示:

var array = 
    [
        1,
        2,
        3,
        4 { didSet{ print("Value Changed")}},
        5,
        6
    ]

以任何方式,这可能吗?

谢谢

4

1 回答 1

4

斯威夫特 3.0

您可以像下面那样对观察者执行更改数组索引的操作。

var oldArray: [Int] = []

var array = [ 1,2,3,4,5,6] {

    willSet {
        // Set old array value for compare
        oldArray = array
    }

    didSet {
        let changedIndex = zip(array, oldArray).map{$0 != $1}.enumerated().filter{$1}.map{$0.0}
        print("index: \(changedIndex)")
    }
}

// Now change value of index 4 of array

array[4] = 10   //index: [4]
于 2017-08-17T05:29:17.137 回答