Skip to content

Instantly share code, notes, and snippets.

@atanasovdejan
Last active July 30, 2018 10:14
Show Gist options
  • Save atanasovdejan/2f538b3149775430c0ef8f4ad818e98a to your computer and use it in GitHub Desktop.
Save atanasovdejan/2f538b3149775430c0ef8f4ad818e98a to your computer and use it in GitHub Desktop.
import UIKit
protocol TestDisplayLogic: class
{
func successFetchedItems(viewModel: Test.Fetch.ViewModel)
func errorFetchingItems(viewModel: Test.Fetch.ViewModel)
}
class TestViewController: UIViewController, TestDisplayLogic
{
var interactor: TestBusinessLogic?
var router: (NSObjectProtocol & TestRoutingLogic & TestDataPassing)?
// MARK: Object lifecycle
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?)
{
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
setup()
}
required init?(coder aDecoder: NSCoder)
{
super.init(coder: aDecoder)
setup()
}
// MARK: Setup
private func setup()
{
let viewController = self
let interactor = TestInteractor()
let presenter = TestPresenter()
let router = TestRouter()
viewController.interactor = interactor
viewController.router = router
interactor.presenter = presenter
presenter.viewController = viewController
router.viewController = viewController
router.dataStore = interactor
}
// MARK: Routing
override func prepare(for segue: UIStoryboardSegue, sender: Any?)
{
if let scene = segue.identifier {
let selector = NSSelectorFromString("routeTo\(scene)WithSegue:")
if let router = router, router.responds(to: selector) {
router.perform(selector, with: segue)
}
}
}
// MARK: View lifecycle
override func viewDidLoad(){
super.viewDidLoad()
interactor?.fetchItems(request: Test.Fetch.Request(itemId: 23, keyword: "bbb", count: "3"))
}
func successFetchedItems(viewModel: Test.Fetch.ViewModel) {
print(viewModel.name)
print(viewModel.date)
}
func errorFetchingItems(viewModel: Test.Fetch.ViewModel) {
print(viewModel.message)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment