title: Converting ErrorType to NSError loses associated objects
body: <p>In Swift 2.0 <code>NSError</code> conforms to the <code>ErrorType</code> protocol.</p>
  
  <p>For a customly defined error, we can specify the associating object(s) for some cases, like below.</p>
  
  <pre><code>enum LifeError: ErrorType {
      case BeBorn
      case LostJob(job: String)
      case GetCaughtByWife(wife: String)
      ...
  }
  </code></pre>
  
  <p>We can comfortably do the following:</p>
  
  <pre><code>do {
      try haveAffairWith(otherPerson)
  } catch LifeError.GetCaughtByWife(let wife) {
      ...
  }
  </code></pre>
  
  <p>However if we want it to pass into other places as an <code>NSError</code>, it loses its associating object information.</p>
  
  <pre><code>println("\(LifeError.GetCaughtByWife("Name") as NSError)")
  </code></pre>
  
  <p>prints:</p>
  
  <pre><code>Error Domain=... Code=1 "The operation couldn't be completed". (... error 1)
  </code></pre>
  
  <p>and its <code>userInfo</code> is <code>nil</code>.</p>
  
  <p>Where is my <code>wife</code> associated with the <code>ErrorType</code>?</p>