title: Model View Presenter and iOS (Swift) Architecture
body: <p>I've been looking into applying the Model View Presenter architecture to a new iOS project. After some reading, I found that this <a href="https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.lsuhokroa" rel="noreferrer">post</a> had the best example. Link to raw gist of code <a href="https://gist.githubusercontent.com/BohdanOrlov/dd0bc1ba235b902a085f/raw/6e79b0be719e54c00ef6bb432c573d1655ec1f7c/MVP.swift" rel="noreferrer">here</a>. </p>
  
  <p>The bottom of the example has the <strong>assembly</strong> code:</p>
  
  <pre><code>// Assembling of MVP
  let model = Person(firstName: "David", lastName: "Blaine")
  let view = GreetingViewController()
  let presenter = GreetingPresenter(view: view, person: model)
  view.presenter = presenter
  </code></pre>
  
  <p>Furthermore, the author states:</p>
  
  <blockquote>
    <p>Since we don’t want the View to know about the Model, it is not right to perform assembly in presenting view controller (which is the View), thus we have to do it somewhere else. For example, we can make the app-wide Router service which will be responsible for performing assembly and the View-to-View presentation.</p>
  </blockquote>
  
  <p>My question:</p>
  
  <ul>
  <li>Where should I put the <strong>assembly</strong> code?</li>
  <li>Where can I find more example of an app-wide <strong>router</strong>?</li>
  </ul>