Отслеживать изменения в объекте массива
Я понятия не имею, возможно ли это вообще, но это избавит меня от большого количества стресса и плохого кода. Можно ли отслеживать всякий раз, когда массив обновляется? Например, метод 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") } }