2015-07-06 3 views
0

Я изо всех сил пытаюсь получить изображение, сохраненное в Parse, чтобы отобразить его в моем UITableViewCell. Ячейка заполняется из других данных, хранящихся в объекте Parse (имя и т. Д.) - только изображение отображается неправильно.Parse Image -> UITableViewCell Not Displaying (Swift)

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
    let cell = UITableViewCell(style: UITableViewCellStyle.Subtitle, reuseIdentifier: "Cell") 

    cell.accessoryType = UITableViewCellAccessoryType.DisclosureIndicator 

    if let client: PFObject = self.clientList[indexPath.row] as? PFObject { 
     let forename: String = client["forename"] as! String 
     let surname: String = client["surname"] as! String 
     let fullname: String = forename + " " + surname 
     cell.textLabel?.text = fullname 

     cell.detailTextLabel?.text = client.objectId 

     let userImageFile = client["image"] as? PFFile 
     if let imageFile = userImageFile { 
     println(imageFile) 
     imageFile.getDataInBackgroundWithBlock({ (imageData: NSData?, error: NSError?) -> Void in 
      if error == nil { 
      if let imageData = imageData { 
       self.image = UIImage(data: imageData)! 
      } 
      } 
     }) 
    // THIS DOESN'T DISPLAY AN IMAGE WHEN RUN 
     cell.imageView?.image = image 
     } else { 

    // THIS IS A LOCAL IMAGE DISPLAYED IF THE PARSE OBJECT DOESN'T CONTAIN AN IMAGE FILE. THIS DOES DISPLAY CORRECTLY WHEN CALLED. 
     let image = UIImage(named: "userMale") 
     cell.imageView?.image = image 
     println("Local Image") 
     } 
    } 

    cell.imageView?.layer.cornerRadius = 40 
    cell.imageView?.layer.masksToBounds = true 
    cell.imageView?.layer.borderColor = UIColor.lightGrayColor().CGColor 
    cell.imageView?.layer.borderWidth = 1 
    return cell 
} 
+0

Вы пробовали println (self. изображение) после утверждения - self.image = UIImage (data: imageData)! или прямо перед тем, как попытаться установить изображение в ячейку? –

ответ

0

Ваш фоновый поиск не завершен, если вы его подключите, как показано на рисунке «cell.imageView? .Image = image». Вам необходимо использовать сообщение для уведомления и после завершения фона, а затем установить ячейку после получения уведомления. Если вы сделаете println на изображении перед тем, как назначить его ячейке, вы увидите, что он показывает размер 0 на 0. Пример уведомления приведен в моем примере кода в example

+0

Я попытался добавить уведомление (похожее на предоставленную ссылку), но я не могу найти подходящее место для запуска уведомления. В настоящее время он по-прежнему получает сигнал до завершения запроса ... –

+0

В примере демонстрационный ридер показан с помощью метода уведомления по почте. Если вы обновите код в своем вопросе, я могу взглянуть на него. –