У меня есть строковый массив, и я также хочу создать локализованную копию этого массива (сохранив исходный массив без изменений).
Есть несколько способов сделать это, но я подумал, что мог бы использовать наблюдатель свойства, чтобы установить содержимое локализованного массива, когда изменяется содержимое нелокализованного массива.
Я создал наблюдатель свойства теста как таковой:
// 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
Кто-нибудь может объяснить, почему это так, и подтвердить, что наблюдатели свойств обычно работают только при изменении одного элемента коллекции?
Спасибо.