Отслеживать изменения в объекте массива

Я понятия не имею, возможно ли это вообще, но это избавит меня от большого количества стресса и плохого кода. Можно ли отслеживать всякий раз, когда массив обновляется? Например, метод A изменяет массив a=[1,2,3] в a=[1,2,3,4], возможно ли иметь своего рода делегат, который срабатывает, когда a обновляется?

1 ответ

Решение

Если ваш массив является свойством в вашем классе, вы можете использовать наблюдатели свойств. willSet вызывается до изменения, didSet вызывается после. Это действительно легко.

var myArray:[Int] = [1, 3, 4] {
    didSet {
        println("arrayChanged")
    }
}

Это напечатает измененный массив, если я добавлю Int, remove и Int и т. Д. Я обычно помещаю его в одну строку, хотя:

var myArray:[Int] = [1, 3, 4] { didSet { println("arrayChanged") } }
Другие вопросы по тегам