Как передать данные во viewModel?

В Swift обычно для передачи данных во ViewModel используются свойства (properties).

Самое простое и наиболее распространенное решение - это создать публичные свойства во ViewModel, которые будут хранить нужные данные. Эти свойства могут быть любого типа - примитивного (например, Int или String) или пользовательского (например, модель данных).

Давайте рассмотрим пример. Предположим, у нас есть ViewController, в котором есть кнопка, и мы хотим передать во ViewModel информацию о том, сколько раз эта кнопка была нажата.

1. Создайте класс ViewModel:

class ViewModel {
    var count: Int = 0
    
    func incrementCount() {
        count += 1
    }
}

2. В вашем ViewController создайте экземпляр ViewModel:

class ViewController: UIViewController {
    var viewModel: ViewModel = ViewModel()
    
    @IBAction func buttonTapped(_ sender: Any) {
        viewModel.incrementCount()
        // обновляем пользовательский интерфейс на основе нового значения count
    }
}

В данном примере мы создали свойство count типа Int в классе ViewModel. Затем мы создали экземпляр ViewModel в ViewController и связали кнопку на пользовательском интерфейсе с методом buttonTapped(). В этом методе мы вызываем метод incrementCount() во ViewModel, который увеличивает значение count на единицу.

Таким образом, когда пользователь нажимает на кнопку, значение count во ViewModel обновляется, и вы можете обновлять пользовательский интерфейс или выполнять другие действия на основе этого нового значения.

Вы можете использовать этот принцип для передачи данных из любого другого элемента пользовательского интерфейса (например, текстовое поле или переключатель) во ViewModel. Просто добавьте соответствующие свойства и методы для обновления этих свойств в вашем классе ViewModel.

В общем, передача данных во ViewModel в Swift - это простой и эффективный способ организации обработки действий от пользователя и управления состоянием приложения.