#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
или
не используется