说明
创建VIPER架构,XCode手动创建比较麻烦,而且容易出错。很自然可以想到用自动化的方式创建,可以用Template进行创建。
1. 如何安装
- 克隆存储库 https://github.com/zafarivaev/VIPER-Template
- 导航到Xcode Templates文件夹:~/Library/Developer/Xcode/Templates/。如果“Templates”文件夹不存在,请创建它
- 将VIPER Module.xctemplate复制并粘贴到Templates文件夹中
2. 使用
- 开启Xcode
- File -> New -> File 要么 ⌘ N
- 向下滚动,直到看到VIPER Module模板并选择它。
- 为您的模块设置一个名称。例子:Home, Auth, SignIn
3. 生成代码如下
3.1 AuthContract.swift
import Foundation
// MARK: View Output (Presenter -> View)
protocol PresenterToViewAuthProtocol {
}
// MARK: View Input (View -> Presenter)
protocol ViewToPresenterAuthProtocol {
var view: PresenterToViewAuthProtocol? {
get set }
var interactor: PresenterToInteractorAuthProtocol? {
get set }
var router: PresenterToRouterAuthProtocol? {
get set }
}
// MARK: Interactor Input (Presenter -> Interactor)
protocol PresenterToInteractorAuthProtocol {
var presenter: InteractorToPresenterAuthProtocol? {
get set }
}
// MARK: Interactor Output (Interactor -> Presenter)
protocol InteractorToPresenterAuthProtocol {
}
// MARK: Router Input (Presenter -> Router)
protocol PresenterToRouterAuthProtocol {
}
3.2 AuthViewController.swift
import UIKit
class AuthViewController: UIViewController {
// MARK: - Properties
var presenter: ViewToPresenterAuthProtocol?
// MARK: - Lifecycle Methods
override func viewDidLoad() {
super.viewDidLoad()
}
}
extension AuthViewController: PresenterToViewAuthProtocol{
// TODO: Implement View Output Methods
}
Interactor
AuthInteractor.swift
import Foundation
class AuthInteractor: PresenterToInteractorAuthProtocol {
// MARK: Properties
var presenter: InteractorToPresenterAuthProtocol?
}
3.3 AuthPresenter.swift
import Foundation
class AuthPresenter: ViewToPresenterAuthProtocol {
// MARK: Properties
var view: PresenterToViewAuthProtocol?
var interactor: PresenterToInteractorAuthProtocol?
var router: PresenterToRouterAuthProtocol?
}
extension AuthPresenter: InteractorToPresenterAuthProtocol {
}
3.4 AuthRouter.swift
import Foundation
import UIKit
class AuthRouter: PresenterToRouterAuthProtocol {
// MARK: Static methods
static func createModule() -> UIViewController {
let viewController = AuthViewController()
let presenter: ViewToPresenterQuotesProtocol & InteractorToPresenterQuotesProtocol = AuthPresenter()
viewController.presenter = presenter
viewController.presenter?.router = AuthRouter()
viewController.presenter?.view = viewController
viewController.presenter?.interactor = AuthInteractor()
viewController.presenter?.interactor?.presenter = presenter
return viewController
}
}
参考
https://github.com/zafarivaev/VIPER-Template
Create Xcode Templates
https://medium.com/overapp-ios/create-xcode-templates-c968d4b43f7b