如何在一个屏幕中触发网络请求并最终在VIPER架构中获得结果?

时间:2018-04-05 03:35:59

标签: ios swift viper-architecture

我需要调用一个'功能'这会产生一些网络请求和数据处理,这可能需要一些时间。

所以,几乎只要我的应用程序启动,我就会调用我的函数,以便在用户进入需要的屏幕时准备好响应。

你在哪里/如何解雇网络请求,以及如何通知最终的主持人你得到了回复或者没有?

1 个答案:

答案 0 :(得分:0)

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

中所述
  • 网络请求和异步响应将在 VIPER 的 interactor 区域中,因为所有传感器、数据库和网络操作都驻留在那里,当然包括从数据包中提取的所有字段或格式化的字节流(这可能是 OP 中所谓的“数据处理”的一小部分)。
  • 检索到的数据及其结构将位于 VIPER 的实体区域。
  • OP 中“数据处理”的主要部分的“业务逻辑”将位于 VIPER 的 presenter 区域,对实体区域中的上述实体进行操作。

似乎某处存在某种刺激(例如,在 VIPER 的 view 区域的 UI 中)来触发最终在交互器区域中成为网络请求的动作。如果该刺激源自 UI,则自然会有从视图到演示者再到交互者的 VIPER 区域间同步消息流,以启动异步网络请求。异步(以及与传出和传入网络流量有关的所有其他内容)将在交互器区域的内部事务内处理。

这个答案首先提到了 VIPER,但没有故意提及 Swift 或 iOS,因为 VIPER 架构区域和它们之间的消息传递应该不知道此应用程序构建针对哪个平台。

  1. iOS 应用会在构建时交换以 iOS/SwiftUI 为中心的视图区域。 MacOS 应用程序将在构建时交换以 Cocoa/SwiftUI 为中心的视图区域。 Android 应用程序将在构建时交换 JNIing-to-Kotlin/Java 视图区域。 UWP 应用将在构建时在 C++/WinRT 或 C#/WinRT 视图区域中交换。
  2. 同样,iOS 或 MacOS 应用程序会在构建时交换以 WebKit 框架为中心的交互器区域。 Android 应用程序将在构建时交换以 WebView 为中心的交互器区域。 UWP 应用会在构建时在以 Windows.Web.Http 为中心的交互器区域中进行交换。