title: Avoiding forced unwrapping in Swift Combine framework
body: <p>In WWDC 2019 video 721, the basis of the main example starts like this:</p>
  
  <pre><code>let trickNamePublisher = NotificationCenter.default.publisher(for: .newTrickDownloaded)
      .map { notification in
          return notification.userInfo?["data"] as! Data
      }
  </code></pre>
  
  <p>That seems inadvisable. What happens if there's no <code>userInfo</code>, or it contains no <code>"data"</code> key, or it isn't a Data? We'll force-unwrap <code>nil</code> and crash. What's the best practice here?</p>