title: Downcasting optionals in Swift: as? Type, or as! Type?
body: <p>Given the following in Swift:</p>
  
  <pre><code>var optionalString: String?
  let dict = NSDictionary()
  </code></pre>
  
  <p>What is the practical difference between the following two statements:</p>
  
  <pre><code>optionalString = dict.objectForKey("SomeKey") as? String
  </code></pre>
  
  <p><em>vs</em></p>
  
  <pre><code>optionalString = dict.objectForKey("SomeKey") as! String?
  </code></pre>