2015-06-08 4 views
2

Я создал var userImages = [PFFile]() и добавил соответствующие изображения пользователей из Parse через пользовательский запрос и self.userImages.append(user["imageFile"] as! PFFile). Это прекрасно работает. Однако, когда я пытаюсь установить изображение пользователя с помощьюОшибка при получении PFFile через getDataInBackgroundWithBlock

userImages.getDataInBackGroundWithBlock{ (data, error) -> Void in ...

Я получаю следующее сообщение об ошибке: **'[(PFFile)]' does not have a member named 'getDataInBackGroundWithBlock'**

Почему это не работа, а что может быть решением этой проблемы ?

Благодарим вас за помощь!

enter image description here

enter image description here

ответ

1

Вы пытаетесь вызвать getDataInBackGroundWithBlock в массиве пытаются использовать»

userImages.last?.getDataInBackGroundWithBlock{...} 

или вы можете сохранить его в переменной и использовать новый PFFIle для извлечения изображение

let userImage = user["imageFile"] as! PFFile 
userImage.getDataInBackGroundWithBlock{...} 

или доступ к нему непосредственно с помощью:

(user["imageFile"] as! PFFile).getDataInBackGroundWithBlock{...} 

Процесс роль существо:

self.userImages.append(user["imageFile"] as! PFFile) //This is just a reference to download the image 

userImages.last?.getDataInBackgroundWithBlock { 
    (imageData: NSData?, error: NSError?) -> Void in 
    if error == nil { 
    if let imageData = imageData { 
     let image = UIImage(data:imageData) // this is the final image 
    } 
    } 
} 
+0

Спасибо за ваш быстрый ответ! userImages.last? не показывает мне изображение, но это более или менее точно, что я пытаюсь сделать. Есть ли другой способ доступа к первому изображению или PFFile из моего массива, например userImages [indexPath.row] (Использование indexPath приводит к ошибке: является неразрешенным идентификатором)? К сожалению, ваши другие предложения не извлекают никаких изображений из моего массива. – GLS

+0

Извините, что я, возможно, плохо себя проявил, я не был уверен, что вы хотите сделать. Я покажу вам несколько вариантов, только первый использует массив, а два других - это более прямой подход. Parse не отправляет вам изображение сначала, а ссылку на изображение, окончательное изображение будет извлекаться из блока getDataInBackGroundWithBlock. – Icaro

+0

@GLS. Я сделал некоторые обновления в своем ответе. Я надеюсь, что это поможет. – Icaro

Смежные вопросы