Какой правильный поток для MVVM в iOS? - PullRequest
0 голосов
/ 02 ноября 2019

До сих пор я наблюдал несколько потоков для шаблона проектирования MVVM. Не уверены, какие из этих 2 правильные?

предположим, что мы хотим отобразить данные о погоде в табличном представлении.

поток 1: (В этом потоке viewcontroller никогда не будет иметь объекты данных внутри него (недаже для целей отображения в виде таблицы) всякий раз, когда viewcontroller хочет сообщить, он будет взаимодействовать только через viewmodel)

  1. viewcontroller информирует связанную модель представления для получения данных о погоде.
  2. API запроса viewmodel для получения погодыdata.
  3. после получения данных из API, модель представления информировала viewcontroller о полученных данных.
  4. просмотр перезагрузки контроллера view table.
  5. tableview ячейка извлекает информацию о погоде из viewmodel, сопоставляяtableview indexpath.

поток 2: (В этом потоке viewcontroller использует / обращается к объектам модели данных для отображения в виде таблицы)

  1. viewcontroller сообщает связанной модели представления для получения данных о погоде.
  2. API запроса viewmodel для получения данных о погоде.
  3. после получения данных из API, view модель информировала viewcontroller о поступлении данных, а также отправила связанные с ними данные.
  4. просмотреть контроллер, перезагрузить таблицу и отобразить данные о погоде, полученные из viewmodel.

Ответы [ 2 ]

1 голос
/ 03 ноября 2019

На мой взгляд, первый поток лучше, потому что

ViewModel должен хранить данные, а не контроллер представления. Это сделает все проще для вас. Вы должны объявить свои переменные, например, некоторый массив данных в модели представления вместо контроллера представления.

Вам не нужно отправлять данные в / из модели представления / контроллеров представления. Просто проинформируйте контроллеры представления через делегата, что некоторые данные поступили.

0 голосов
/ 03 ноября 2019

Это мой любимый поток:

1 - Создайте Singelton с именем APIManager для обработки выборки данных.

2 - ViewController запрашивает данные у APIManager.

3- Вставьте данные, которые вы выбрали в модель представления.

4 - создайте dataSourceVariable, обновите ваш tableView или collectionView

var dataSource: [ViewModel]? {
      didSet {
          (tableView/collectionView).reloadData()
      }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...