1

我有一个字符串数组,我还希望创建这个数组的本地化副本(同时保持原始数组不变)。

有很多方法可以做到这一点,但我想当非本地化数组的内容被修改时,我可能会使用属性观察器来设置本地化数组的内容。

我这样创建了一个测试属性观察器:

// Array  to store the card theme names
private var cardThemeNames = [String]() {
    didSet {
        // debug print statement
        print( oldValue )
    }
}

有趣的是,如果我一次修改一个元素的 cardThemeNames 数组,那么观察者的 didSet 方法就会如预期的那样被调用,即:

cardThemeNames.append( "Random" )

但是,如果我通过附加另一个数组来修改数组,则不会调用 disSet,即:

cardThemeNames.append( contentsOf: someOtherArray )

或者:

cardThemeNames += someOtherArray

谁能解释为什么会这样并确认属性观察者是否通常只在修改集合的一个元素时才起作用?

谢谢。

4

0 回答 0