Swift VIPER Interactor 和 Presenter 数据验证规则

Swift VIPER Interactor and Presenter rules for data validation

我确实有几个问题。交互器的最佳使用方式:

假设我在交互器中保存了一些数据,但我想检查这些数据并显示下一个警报:

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

First question is this violation of Viper? And do I need to check data in presenter before passing it to interceptor?

Another question: Do I need to use function showAlertFillIssue instead of passing text?

甚至假设我会在违反 interactor 的情况下从 presenter 传递它。

您好,Viper 架构,交互器包含业务逻辑。因此,在验证您的数据时。您可以从演示者调用方法来显示错误消息。 您可以定义一个枚举来处理错误并将其传递给 showAlert 方法。

self.presenter?.showAlert(with: FormError.AllFieldRequired)

https://TheSwiftDev.com/the-ultimate-viper-architecture-tutorial

所述
  • 交互器区域仅用于从传感器、数据库或网络协议获取实体,或用于将实体发射到数据库或网络协议。
  • 相反,演示区用于所有业务的执行rules/logic。偶尔会有灰色阴影(如下所述),但一般规则是检测并非所有字段都正确填写将在演示者中脱离数据库概念并脱离 UI 概念。
  • 最好将 showAlert 视为完全在视图区域中的东西,因为根据 OS,它可能是 1 OS 上的警报,但一些非警报 UI 在另一个 OS 上构建。最好将 VIPER 视为:此操作在所有其他 OSes(而不是 iOS)上会是什么样子,例如至少 MacOS 但 Android & UWP(或其他 UI 在视图区域隔离的基础设施,例如 Qt)。最好将 showAlert 更笼统地改写为 emitError 或 balkBack,而无需提及此 OS 上的实际 UI 构造。同样,showAlertFillIssue 和任何其他特定 UI 操作最好完全隔离在视图区域内,远离演示者(业务规则)和交互者(实体获取和存储)。