VIPERBuilder 2.1.0

VIPERBuilder 2.1.0

Michael MacDougallKris ArnoldJacob Van Order 维护。



  • Etsy

VIPERBuilder

Build Status codecov.io CII Best Practices

使用 VIPER 架构以清晰的方式构建应用的框架。

VIPER 本身有几个问题

  • 样板代码过多
  • 由于管理了很多类,可能导致潜在的 retain 循环
  • 设置过程中的认知开销

本框架旨在通过一组基类来划分您应用的功能,并使用构建对象来管理连接来解决这个问题。

安装

CocoaPod

pod VIPERBuilder 添加到您的 Podfile 中

运行 pod install

使用方法

  1. 根据需要,创建 VIPERInteractorVIPERPresenterVIPERRouter 的子类

  2. 使用指定的新子类来创建一个对 VIPERBuilder 实例的强引用。Swift 的懒加载将确保构建对象在调用时可用

    lazy var viperBuilder: VIPERBuilder<NewInteractor, NewPresenter, NewRouter> = { return VIPERBuilder(controller: self) }()

注意:如果不需要所有的类来实现,将超类传递给构建器对象是支持的

对于更详细的实现,请查看此仓库中包含的演示项目

代码分离

本框架为VIPER的三个主要部分:交互器(Interactor)、展示者(Presenter)、路由器(Router)提供三个基础类。每个类应该包含某些代码,并因特定原因对其他类有引用,但可以通过子类扩展这些功能。


交互器

目的
  • 用户交互(直接的和通过从其他类委托的)
  • 数据检索/变更
引用使用
  • 展示者:在检索或变更数据后用于更新视图
  • 路由器:根据采取的操作进行导航

展示者

目的
  • 配置视图/视图模型(实体对象)
  • 显示模态/加载屏幕
引用用例
  • 控制器:展示模态窗口/错误消息
  • 交互器:可以作为从视图中发出的任何操作的代理使用

路由器

用途
  • 导航(将视图推入 UINavigationController 的堆栈中)
参考用例
  • 导航控制器:用于推送屏幕