监视对数组对象的更改

Osc*_*and 15 swift swift-array

我根本不知道这是否可行,但它会让我免受很多压力和糟糕的代码.是否有可能在阵列更新时进行监控?例如,方法A将数组更改a=[1,2,3]a=[1,2,3,4],是否有可能在a更新时触发某种委托?

Jer*_*ope 33

如果您的数组是类中的属性,则可以使用属性观察器.在更改之前调用willSet,之后调用didSet.这真的很容易.

var myArray:[Int] = [1, 3, 4] {
    didSet {
        println("arrayChanged")
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我添加一个Int,remove和Int等,这将打印数组更改.我通常把它放在一行但是:

var myArray:[Int] = [1, 3, 4] { didSet { println("arrayChanged") } }
Run Code Online (Sandbox Code Playgroud)

  • 有没有办法监控内部阵列的变化?喜欢myArray.append(x)? (11认同)
  • @PavelAlexeev如果您为数组定义`set`,它将调用所有`removeAll`,`append`等更改。 (4认同)