title: UICollectionViewController - unexpected found nil while unwrapping an Optional value
body: <p>I'm trying to implemented a Collection View controller and am massively failing... How do I get rid of this unwrapping error ? It occurs when I create my collectionView cell in my cellForRowAtIndexPath function.</p>
  
  <p>Here is the code.</p>
  
  <pre><code>    override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -&gt; UICollectionViewCell {
  
  let cell = picturesCollectionView.dequeueReusableCellWithReuseIdentifier(PhotoBrowserCellIdentifier, forIndexPath: indexPath) as? PhotoBrowserCollectionViewCell
  
      if let photoObject = pictureObjects.objectAtIndex(indexPath.row) as? PictureElement {
  
          let title = photoObject.title ?? "" // if photoObject.title == nil, then we return an empty string
  
          let timeStampDateObject = NSDate(timeIntervalSince1970: NSTimeInterval(photoObject.timeStamp))
          let timeStampDateString = dateFormatter.stringFromDate(timeStampDateObject)
  
          let author = photoObject.author ?? ""
  
          let issueNumber = photoObject.issueNumber ?? ""
          let volumeNumber = photoObject.volumeNumber ?? ""
  
          let nodeID = photoObject.nodeID ?? 0
  
          let imageURL = photoObject.imageURL ?? ""
  
          cell!.request?.cancel()
  
          // Using image cache system to make sure the table view works even when rapidly scrolling down the screen.
          if let image = self.imageCache.objectForKey(imageURL) as? UIImage {
  
              cell!.imageView.image = image
  
          } else {
  
              cell!.imageView.image = nil
              cell!.request = Alamofire.request(.GET, imageURL).responseImage { response in
                  if let image = response.result.value {
                      self.imageCache.setObject(response.result.value!, forKey: imageURL)
                      cell!.imageView.image = image
  
                  } else {
                  }
              }
          }
      } else {
  }
      return cell!
  </code></pre>
  
  <p>}</p>
  
  <p>Also, I already tried to use a guard-let statement and it didn't work. Here it is:</p>
  
  <pre><code>        guard let cell = picturesCollectionView.dequeueReusableCellWithReuseIdentifier(PhotoBrowserCellIdentifier, forIndexPath: indexPath) as? PhotoBrowserCollectionViewCell else {
  
          print("cell could not be initialized as PhotoBrowserCollectionViewCell, hence it will be casted to another default UICollectionViewCell type")
          return collectionView.dequeueReusableCellWithReuseIdentifier(PhotoBrowserCellIdentifier, forIndexPath: indexPath)
  
  
      }
  </code></pre>