説明
VIPERアーキテクチャを作成するために、XCodeの手動作成はより面倒でエラーが発生しやすくなります。自動化された方法で作成することを考えるのは自然であり、テンプレートを使用して作成できます。
1.インストール方法
- リポジトリのクローンを作成するhttps://github.com/zafarivaev/VIPER-Template
- Xcodeテンプレートフォルダに移動します:〜/ Library / Developer / Xcode / Templates /。「テンプレート」フォルダが存在しない場合は作成してください
- VIPERModule.xctemplateをコピーしてTemplatesフォルダーに貼り付けます
2.使用する
- Xcodeを開く
- [ファイル]-> [新規]-> [ファイル]または⌘N
- VIPER Moduleテンプレートが表示されるまで下にスクロールして、それを選択します。
- モジュールの名前を設定します。例:ホーム、認証、サインイン
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.2AuthViewController.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.3AuthPresenter.swift
import Foundation
class AuthPresenter: ViewToPresenterAuthProtocol {
// MARK: Properties
var view: PresenterToViewAuthProtocol?
var interactor: PresenterToInteractorAuthProtocol?
var router: PresenterToRouterAuthProtocol?
}
extension AuthPresenter: InteractorToPresenterAuthProtocol {
}
3.4AuthRouter.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
Xcodeテンプレートを作成する
https://medium.com/overapp-ios/create-xcode-templates-c968d4b43f7b