title: Prevent runtime crash for function instantiateViewController(withIdentifier:)
body: <h1>Swift 3.0</h1>
  
  <p>From what I found here is UIStoryboard always return non-optional instance in function <code>instantiateViewController(withIdentifier:)</code>.</p>
  
  <pre><code>open class UIStoryboard : NSObject {
     ...
     open func instantiateViewController(withIdentifier identifier: String) -&gt; UIViewController
  }
  </code></pre>
  
  <p>The crash happen if we adding wrong <code>identifier</code> value, without noticed.
  This case might happen in complex projects which have large number of controller in many storyboards, and a controller <code>StoryboardId</code> is missed.</p>
  
  <p>The only solution I found is making a function to temporary create all controllers when start app delegate (this function should be called in debugging mode only).</p>
  
  <pre><code>func validateControllers() {
      guard let _ = xyzStoryboard.instantiateViewController(withIdentifier: "ABC") as? ABCViewController else {
          fatalError("fail in init controller ABC from storyboard XYZ")
      }
      ...
  }
  </code></pre>
  
  <p>But I wonder if we could have another way to handle this situation. Or should I raise this issue to Swift team? Thanks! </p>