MVVM и анимация изменений во View
Есть такой псевдокод:
class ViewModel {
var entities: Observable<[Entity]>
// остальная реализация
}
class ViewController {
setupBindings() {
viewModel.entities.bind { entities in
// обновить вью с анимациями
}
}
// остальная реализация
}
Задача - обновить View анимированно. Чтобы это сделать, нам нужно знать предыдущее состояние viewModel и новое, которое мы получили. Затем найти разницу между ними в виде индексов по которым лежат новые элементы и написать что то вроде (снова псевдокод):
tableView.insertRowWithAnimation(insertionIndexPath) Вопрос - Как можно получить эту разницу между состояниями ViewModel? Мы не можем поместить эту логику во ViewController потому что мы для содержания логики преобразования мы как раз имеем ViewModel. Но в то же время, мы не можем передавать из ViewModel разницу между состояниями, потому что ViewModel должна содержать только те данные которые напрямую отображаются во View.
p.s. Реактивные фреймворки не использую. DiffableDataSources аналогично. Считаю решение должно иметь место вне этих логик.