Допустим, у меня есть следующий SwiftRx (2.0.0-beta.4) MVVM:
У меня 4 вещи:
- ItemListViewController
- ItemsViewModel
- ItemsManager
- Элемент
ItemsManager имеет функцию items (), которая возвращает элементы наблюдаемым способом RxSwift.
ItemsViewModel пока нужно только передать элементы. Позже можно применить логику отображения к атрибуту элемента для контроллера представления (например, для правильного отображения даты).
ItemListViewController поместит элементы в таблицу, по одному элементу в строке.
У элемента есть 4 атрибута (например, идентификатор, дата и т. Д.), Которые будут отображаться в ячейке строки таблицы.
Как настроить его в ItemsViewModel и ItemsManager, чтобы при добавлении, удалении и изменении элементов в диспетчере они проходили через ItemsViewModel?
Прочитав документацию и просмотрев Rx.playground, похоже, что сейчас нужно использовать RxSwift PublishSubject‹ Item> или, может быть, карту RxSwift strong > который каким-то образом подписан на элементы менеджера ()
Как это сделать хорошо?
В ItemsManager сейчас есть что-то вроде этого:
func items() -> Observable<Item> {
// placeholder for now
return [Item(identification: "123", content: ""), Item(identification: "456", content:""), Item(identification: "789", content:"")].toObservable()
}
В модели представления есть следующее:
let items = Variable(/* how to subsribe to the items in the manager? */)