title: How does optional binding function different from optional chaining?
body: <p><strong>EDITED:</strong> </p>
  
  <p>I am learning from a tutorial from Raywenderlich. My question is why do we use an optional binding ie <code>if let</code> what difference does it make? Why can't we use optional chaining—similar to Line A &amp; B ?   </p>
  
  <pre><code> func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -&gt; UITableViewCell {
      let cell = tableView.dequeueReusableCellWithIdentifier("IconCell", forIndexPath: indexPath)
      let icon = icons[indexPath.row]
  
      cell.textLabel?.text = icon.title // Line A
      cell.detailTextLabel?.text = icon.subtitle // Line B
  
     if let imageView = cell.imageView, iconImage = icon.image { //Line C
        imageView.image = iconImage
      }
  </code></pre>
  
  <p>The instructor's explanation is :</p>
  
  <p><em>When we instance an icon we get a reference to the image based on a string...if for whatever reason that image isn't included in the bundle, renamed or deleted, then that icon may not have an image associated with it...and we have to use if let to make sure it is there.</em></p>
  
  <p>I still don't understand the difference.</p>