title: Update UILabel inside UICollectionView
body: <p>Here is my code for my collectionView:</p>
  
  <pre><code>  func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -&gt; UICollectionViewCell {
      let cell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath)
      let cellWidth = self.view.frame.size.width / 3 - 15
      cell.layer.cornerRadius = cellWidth / 15
  
      // Fetch final image - if it exists
      if let finalImage = collectedRows[indexPath.row]["picture"] as? PFFile {
        finalImage.getDataInBackgroundWithBlock {
          (imageData: NSData?, error: NSError?) -&gt; Void in
          if error == nil {
            if let imageData = imageData {
  
              let imageView = UIImageView(frame: CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height))
              imageView.image = UIImage(data: imageData)
              imageView.contentMode = UIViewContentMode.ScaleToFill
              cell.addSubview(imageView)
  
              if #available(iOS 8.0, *) {
                  if !UIAccessibilityIsReduceTransparencyEnabled() {
                    cell.backgroundColor = UIColor.clearColor()
  
                    let blurEffect = UIBlurEffect(style: UIBlurEffectStyle.Light)
                    let blurEffectView = UIVisualEffectView(effect: blurEffect)
                    //always fill the view
                    blurEffectView.frame = cell.bounds
                    blurEffectView.autoresizingMask = [.FlexibleWidth, .FlexibleHeight]
  
                    cell.addSubview(blurEffectView)
              } else {
                    let overLayer = UIView(frame: CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height))
                    overLayer.backgroundColor = UIColor.blackColor()
                    overLayer.alpha = 0.75
                    cell.addSubview(overLayer)
                  }
              } else {
                  // Fallback on earlier versions
                let overLayer = UIView(frame: CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height))
                overLayer.backgroundColor = UIColor.blackColor()
                overLayer.alpha = 0.75
                cell.addSubview(overLayer)
              }
  
              //Create time Left label
  
              if let sentDate = self.collectedRows[indexPath.row]["sentAt"] as? NSDate {
                print("sentDate: \(sentDate)")
                let calendar = NSCalendar.currentCalendar()
  
                if #available(iOS 8.0, *) {
                  let expiryDate = calendar.dateByAddingUnit(.Day, value: 1, toDate: sentDate, options: NSCalendarOptions())
                  let currentDate = NSDate()
                  let differenceTime = calendar.components([.Day, .Hour, .Minute, .Second], fromDate: currentDate, toDate: expiryDate!, options: NSCalendarOptions())
                  print("sendDate2: \(differenceTime)")
                  let hoursLeft = String(differenceTime.hour)
                  let minutesLeft = String(differenceTime.minute)
                  let secondsLeft = String(differenceTime.second)
  
                  if (Int(hoursLeft)! &lt;= 0 &amp;&amp; Int(minutesLeft)! &lt;= 0 &amp;&amp; Int(secondsLeft)! &lt;= 0) {
                    //remove object from parse
                    self.collectedRows[indexPath.row].deleteInBackground()
                    self.collectedRows[indexPath.row].saveInBackground()
                  } else {
                    let timerLabel = UILabel(frame: CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height))
                    timerLabel.font = UIFont(name: "SourceSansPro-Semibold", size: 16)
                    timerLabel.textAlignment = .Center
                    timerLabel.textColor = UIColor.whiteColor()
                    timerLabel.text = "\(hoursLeft):\(minutesLeft):\(secondsLeft)"
                    cell.addSubview(timerLabel)
                    cell.bringSubviewToFront(timerLabel)
                  }
                } else {
                  // Fallback on earlier versions
                  let timerLabel = UILabel(frame: CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height))
                  timerLabel.font = UIFont(name: "SourceSansPro-Semibold", size: 16)
                  timerLabel.textAlignment = .Center
                  timerLabel.textColor = UIColor.whiteColor()
                  timerLabel.numberOfLines = 2
                  timerLabel.text = "Less than \n24 Hours Left"
                  cell.addSubview(timerLabel)
                  cell.bringSubviewToFront(timerLabel)
  
                }
              }
  
              if #available(iOS 8.0, *) {
              let deleteButton = UIButton(frame: CGRectMake(cell.frame.size.width/2, cell.frame.size.height * 0.75, cell.frame.size.width/2, cell.frame.size.height/4))
              deleteButton.backgroundColor = UIColor.clearColor()
              deleteButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
              deleteButton.setTitle("...", forState: .Normal)
              deleteButton.titleLabel!.font = UIFont(name: "SourceSansPro-Bold", size: 32)
              cell.addSubview(deleteButton)
              deleteButton.addTarget(self, action: "removeFromProfile:", forControlEvents: UIControlEvents.TouchUpInside)
              } else {
                // DO NOT even show button
              }
              cell.layer.cornerRadius = cell.frame.size.width / 15
              cell.layer.masksToBounds = true
            }
          }
        }
      }
      return cell
    }
  </code></pre>
  
  <p>I am creating a UICollectionViewCell that has a blurred photo and a UILabel on top that is a 24 hour countdown label. That all works fine. However, I want the UILabel to update every second so it is continuously counting down. I know that I can create an NSTimer to update the entire UICollectionView every second (using collection.reloadData()). That obviously causes memory issues and crashes the app. Does anyone know how to update just the label? Or does anyone know how to pull the label creation out of this method and then apply the label to the appropriate cell atIndexPath and then call the new method (label creation) using NSTimer.scheduledWithInterval? The section marked:</p>
  
  <pre><code>//Create time Left label
  </code></pre>
  
  <p>is the only section I need updated every second.</p>