strongself / The-Book-of-VIPER

the one and the only
Other
958 stars 129 forks source link

Пример взаимодействия с DataDisplayManager #57

Closed krasnodar95 closed 7 years ago

krasnodar95 commented 7 years ago

Недавно прочитал вашу книжку по Viper. Огромное спасибо за проделанную работу. У меня вопрос связанный с DataDisplayManager. В книжке эта тема затронута вскользь. Судя по схеме в главе "Структура viper-модуля", DDM должен быть связан только со View. У меня вопрос как тогда нужно подкидывать в него данные для отображения(я так понимаю что это те самые PONSO-объекты)? Нужно ли эти данные хранить в DDM? Хотелось бы увидеть более развернутое объяснение. Спасибо:)

etolstoy commented 7 years ago

@krasnodar95 спасибо за вопрос! В общем виде DDM - это класс, реализующий два протокола, UITableViewDataSource и UITableViewDelegate. Есть два варианта его устройства:

krasnodar95 commented 7 years ago

-(NSInteger) countOfObjects; -(id)objectByIndex: (NSInteger *)index; И так до интерактора?

etolstoy commented 7 years ago

@krasnodar95 в этом случае под viewmodel понимаем обычные DTO, которые доставляют до ячеек данные, нужные им для отображения - так что MVVM здесь не при чем. В простых случаях DDM сам преобразует модели во view model'и, в более сложных - логика выносится в отдельный cellObjectFactory. Во втором случае да - но семантика методов меняется в зависимости от конкретного слоя. Плюс в некоторых случаях цепочка может заканчиваться на презентере, который держит промежуточный стейт (к примеру, текущее количество элементов таблицы).

krasnodar95 commented 7 years ago

@etolstoy Спасибо! Стало гораздо понятнее) В книге было бы неплохо уделить внимание этому вопросу. У нас ведь почти везде коллекции и таблицы)