2015-09-09 2 views
0

Я пытаюсь загрузить изображение с текстом Parse.com в мой UICollectionView. Это мой код:Запрос от Parse.com до UICollectionView

func QueryFromParse(){ 
     var query = PFQuery(className: "Posts") 
     query.orderByDescending("createdAt") 
     query.findObjectsInBackgroundWithBlock { (objects:[AnyObject]?, error:NSError?) -> Void in 
      if error == nil 
      { 
       if let newObjects = objects as? [PFObject] { 

        for oneobject in newObjects { 
         let text = oneobject["imageText"] as! String 
         let username = oneobject["username"] as! String 
         let time = oneobject.createdAt! 

         let placeholder = UIImage(named: "Placeholder")! // Put some placeholder image here till the other image downloads. 
         var OneBigObject = Details(username: username, text: text, CreatedAt: time, image: placeholder) 
         self.arrayOfDetails.append(OneBigObject) 
         dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() } 
         let userImageFile = oneobject["imageFile"] as! PFFile 
         userImageFile.getDataInBackgroundWithBlock({ (imageData:NSData?, error:NSError?) -> Void in 
          if error == nil { 
           if let newImage = UIImage(data: imageData!) { 
            OneBigObject.image = newImage 
            dispatch_async(dispatch_get_main_queue()) { self.collectionView.reloadData() } 
           } 
          } 
         }) 
        } 
       } 
      } 
     } 
    } 

Parse.com "Сообщения": enter image description here

struct Details { 
    var username:String! 
    var text:String! 
    var CreatedAt:NSDate! 
    var image:UIImage! 
    init(username:String,text:String,CreatedAt:NSDate,image:UIImage){ 

     self.username = username 
     self.text = text 
     self.CreatedAt = CreatedAt 
     self.image = image 
    } 
} 

Изображения делает только показывает "Заполнитель" изображение, а не изображение из Parse.com, но текст изображения и время правильные ... Любые предложения?

+0

можете ли вы ввести код детали класса – Lamar

+0

@Lamar - добавлен в вопрос. –

ответ

0

Вы находитесь на правильном пути, однако вы должны заполнить только imageView.image с помощью заполнителя, только если изображение пользователя равно нулю.

Поэтому в getDataInBackgroundWithBlock вы будете проверять, если у вас есть изображение, если да

-add имя пользователя

-add в imageText

-add изображение

-add время, когда оно было создано на

- Затем вставьте всю информацию в массив - Затем перезагрузите CollectionView

Однако если user'image равна нулю

-Добавить имя пользователя

-add imageText

-Добавить в заполнитель

-add время он был создан в

- Затем вставьте всю информацию в массив - Затем загрузите в CollectionView

+0

Можете ли вы представить код для этого, пожалуйста? Было бы очень полезно. –

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