title: Trying to pass nil but compiler keeps making me force unwrap an optional value Swift
body: <p>I am working on an app, and I created the following function: </p>
  
  <pre><code>func initMPVideoPlayer(videoUrl: NSString?) {
      var fileURL: NSURL = NSURL(string: videoUrl)
      self.videoController = MPMoviePlayerController()
      self.videoController?.contentURL = fileURL
  
      self.videoController?.controlStyle = MPMovieControlStyle.None
      self.videoController?.scalingMode = MPMovieScalingMode.AspectFill
      self.videoController?.setFullscreen(true, animated: true)
      self.videoController?.movieSourceType = MPMovieSourceType.Streaming
      self.videoController?.view.frame = self.view.bounds
      MBProgressHUD.showHUDAddedTo(self.videoController?.backgroundView, animated: true)
  
      self.view.insertSubview(self.videoController!.view, atIndex: 2)
  
      let tapGesture: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action:("showView"))
      tapGesture.delegate = self
      tapGesture.numberOfTapsRequired = 1
      self.videoController?.view.addGestureRecognizer(tapGesture)
  
      self.videoController?.prepareToPlay()
      NSNotificationCenter.defaultCenter().addObserver(self, selector: "videoPlayBackDidFinish", name: MPMoviePlayerPlaybackDidFinishNotification, object: self.videoController)
  
  
  }
  </code></pre>
  
  <p>I call the function in the view controllers viewdidload method, and I pass it nil, like so: <code>self.initMPVideoPlayer(nil)</code> but for some reason the compiler gives me an error, and tells me that i should force unwrap this line within the function like so: <code>var fileURL: NSURL = NSURL(string: videoUrl!)!</code> However that can't be correct because I am deliberately passing in <code>nil</code> so why is it telling me to do something that clearly will not work. I've been trying to figure out a solution but have yet to find one....</p>