Swift 5用Template自动创建VIPER架构代码

说明

创建VIPER架构,XCode手动创建比较麻烦,而且容易出错。很自然可以想到用自动化的方式创建,可以用Template进行创建。
在这里插入图片描述

1. 如何安装

  1. 克隆存储库 https://github.com/zafarivaev/VIPER-Template
  2. 导航到Xcode Templates文件夹:~/Library/Developer/Xcode/Templates/。如果“Templates”文件夹不存在,请创建它
  3. 将VIPER Module.xctemplate复制并粘贴到Templates文件夹中

2. 使用

  1. 开启Xcode
  2. File -> New -> File 要么 ⌘ N
  3. 向下滚动,直到看到VIPER Module模板并选择它。
  4. 为您的模块设置一个名称。例子: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

猜你喜欢

转载自blog.csdn.net/zgpeace/article/details/113094876