Передача данных между двумя ViewControllers в MVVM

#ios #swift #mvvm

#iOS #swift #mvvm

Вопрос:

Недавно я начал изучать MVVM и застрял при передаче данных между 2 контроллерами просмотра.У меня есть массив элементов в моей ViewModel1 viewController1, и я хочу передать этот массив viewcontroller2. Я могу добиться этого, получив весь массив из ViewModel1, как показано ниже, но я не уверен, что это правильный способ сделать это.

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   if segue.identifier == Constants.kShowDetailSegue {
        let destinationViewController = segue.destination as! ListViewController
        destinationViewController.products = viewModel1.getFavouriteProducts()
      //the getFavouriteProducts gets data from coredata.

    }
}
 

Комментарии:

1. Это обычно используемый шаблон передачи данных, поэтому в нем нет ничего плохого / плохого. Это работает нормально, верно? Вы хотите передать массив, ваш ListViewController получает массив.

2. спасибо за ответ. Я не думаю, что то, что я делаю, правильно следует за MVVM. Я не хочу, чтобы массив в viewcontroller2 был доступен viewcontroller1

Ответ №1:

Я думаю, вы сделали это правильно, но в качестве альтернативы вы можете использовать замыкания. Которые являются предпочтительным способом связи в iOS. Вы позаботитесь об утечках памяти везде, где это необходимо, используя

 weak 
 

или

не используется