Правила Swift Viper Interdictor и Presenter для проверки данных

У меня есть несколько вопросов. Какой лучший способ использовать интерактор:

Допустим, в перехватчике я сохраняю некоторые данные, но хочу проверить эти данные и показать следующее предупреждение:

self.presenter?.showAlert(with: "All fields are required for adding exercise.".localized)

Первый вопрос - это нарушение Viper? И нужно ли проверять данные в презентере, прежде чем передавать их перехватчику?

Другой вопрос: мне нужно использовать функцию showAlertFillIssue вместо передачи текста?

Даже скажем, я передам это от presenter в случае нарушения interactor,

2 ответа

Решение

Как описано в https://TheSwiftDev.com/the-ultimate-viper-architecture-tutorial,

  • зона взаимодействия предназначена исключительно для получения объектов от датчиков, базы данных или сетевых протоколов или для передачи объектов в базу данных или сетевые протоколы.
  • И наоборот, зона презентатора предназначена для выполнения всех бизнес-правил / логики. Иногда присутствуют оттенки серого (как указано ниже), но общее правило состоит в том, что обнаружение не всех полей, заполненных должным образом, будет в презентаторе, отделенном от концепций базы данных и от концепций пользовательского интерфейса.
  • ShowAlert лучше всего рассматривать как что-то полностью находящееся в зоне просмотра, потому что, в зависимости от ОС, это может быть предупреждение для одной ОС, но некая конструкция пользовательского интерфейса без предупреждения в другой ОС. Лучше всего думать о VIPER как о том, как это действие будет выглядеть во всех других ОС (кроме iOS), таких как, по крайней мере, MacOS, но также Android и UWP (или другая инфраструктура пользовательского интерфейса, помещенная в карантин в зоне просмотра, например Qt). Было бы лучше перефразировать showAlert как emitError или balkBack в более общем виде, не обращая внимания на то, что на самом деле представляет собой конструкция пользовательского интерфейса в этой ОС. Аналогичным образом, showAlertFillIssue и любое другое конкретное действие пользовательского интерфейса лучше всего помещать в карантин полностью в зоне просмотра, вдали от докладчика (бизнес-правила) и от интерактора (получение и хранение сущностей).

Привет с Viper Architechture, Интеррактор содержит бизнес-логику. Так что при проверке ваших данных. Вы можете вызвать метод вашего докладчика, чтобы отобразить сообщение об ошибке. Вы можете определить перечисление для обработки ошибок и передать его в методы showAlert.

self.presenter?.showAlert(with: FormError.AllFieldRequired)
Другие вопросы по тегам