' didSet'数组中的某些元素 - Swift

时间:2017-08-17 05:18:07

标签: ios arrays swift didset

我有一个数组,有多个值。我想检测其中一个值是否发生了变化,如下所示:

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

这有可能吗?

由于

1 个答案:

答案 0 :(得分:3)

Swift 3.0

您可以在下面向Observer执行更改数组索引的内容。

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]