Наблюдатели свойств Swift: почему не вызывается SetSet для свойства массива, если в массив добавляется новый массив? - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть строковый массив, и я также хочу создать локализованную копию этого массива (сохранив исходный массив без изменений).

Есть несколько способов сделать это, но я подумал, что мог бы использовать наблюдатель свойства, чтобы установить содержимое локализованного массива, когда изменяется содержимое нелокализованного массива.

Я создал наблюдатель свойства теста как таковой:

// 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

Кто-нибудь может объяснить, почему это так, и подтвердить, что наблюдатели свойств обычно работают только при изменении одного элемента коллекции?

Спасибо.

...