2015-04-26 6 views
0

Я работаю над запросом Parse, который вытаскивает имена и фотографии на основе географии, а затем загружает их в табличный вид. Первая часть запроса проходит без проблем. Я застрял на второй части потянув/загрузив фотографии.PFFile Не загружается на стол View

Я мог ошибиться с отсутствующим вызовом изображений в методе queryForTable. Здесь я попробовал includeKey (который провалился, поскольку это не указатель на другой объект); Я также обратился к изображениям, используя getDataInBackgroundWithBlock. В каждом случае я попытался бы загрузить загруженные объекты в представление таблицы с помощью строки, например cell.imageData.image = photo.

Но разные учетные записи SO также указывают, что вызов может идти в методе tableView, который у меня есть ниже. Я прочел SO, Parse.com и другие ресурсы, но пока не нашел решения. Надеясь кто-то может помочь:

override func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!, object: PFObject?) -> Stores! { 
    let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! Stores 

    if let object = object { 
     let Name = object.valueForKey("Name") as? String 
     cell.storeList.text = Name 

     let photo = object.objectForKey("Photos") as? PFFile 
     photo?.getDataInBackgroundWithBlock {(imageData: NSData!, error: NSError!) -> Void in 
      if error == nil { 
       let image = UIImage(data: imageData) 
       cell.storeImage.file = photo 
      } 
     }} 

    return cell as Store 
+0

Запуск фона блока как ячейки dequeu является плохая идея. – ericgu

+0

Вы можете использовать мой взлом: http://stackoverflow.com/questions/28649257/parse-pfquerytableviewcontroller-pfquerytableviewcell-subclass-breaks-pfimag – ericgu

+0

Спасибо, Эрик! Я попытался реализовать хак, но изображение тоже не появилось. Однако я удалил «getDataInBackgroundWithBlock». – Christine

ответ

0

Что, наконец, работал для меня помещал свойство файла в вызове как таковой:

cell.imageView.loadInBackground {(image: UIImage!, error: NSError!) -> Void in 
    if error == nil { 
    cell.imageView.file = object!.objectForKey("Photos") as? PFFile 
    } 

А Пересмотреть к Parse документы показали что это «.file», а не «.image». Кроме того, я пошел с «loadInBackground», в отличие от «loadInBackgroundWithBlock», для асинхронного вызова. Надеюсь, это поможет кому-то, кто озадачен тем же вопросом.

Благодаря @BHendricks, @ericgu, @danh для обмена мнениями! Попытка всех ваших предложений определенно приблизила меня к моему ответу.

0

Вместо использования cell.storeImage.file = photo, вы должны использовать image.

Так в вашем блоке завершения, вы должны иметь:

let image = UIImage(data: imageData) 
cell.storeImage.file = image 
+0

Спасибо за предложение. Я исправил, как было предложено. К сожалению, изображение все еще не отображается. – Christine

+0

- это блок завершения выполняемого вызова getData? – BHendricks

+0

Звонок выполнялся до некоторой степени. Проверяя это с помощью контрольных точек, не было объектов возврата. – Christine