2016-01-21 2 views
0

Я создаю приложение, основанное на фотографиях. Поэтому для меня очень важно получить все изображения асинхронно, как это делает Instagram. Я понимаю, что эта функция ...Async With Parse

var query = PFQuery(className: "Post") 
    query.findObjectsInBackgroundWithBlock { (objects, error) -> Void in 
     if let objects = objects as! [PFObjects] { 
      for object in objects { 
       objectsArray.append(object) 
      } 
     } 
    } 

... является асинхронным. Но я хочу, чтобы загружать изображения из Parse в таблицу асинхронно, чтобы загружать изображения во время прокрутки.

ответ

2

Вы должны взглянуть на функцию PFImageView loadInBackground().

Например, если вы используете PFTableViewController с PFTableViewCell, вы можете сделать следующее

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath, object: PFObject?) -> PFTableViewCell { 

    var cell = tableView.dequeueReusableCellWithIdentifier("CustomCell") as! CustomTableViewCell! 
    if cell == nil { 
     cell = CustomTableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "CustomCell") 
    } 

    if let name = object?["name"] as? String { 
     cell.nameLbl.text = name 
    } 

    var initialThumbnail = UIImage(named: "placeholder") 
    cell.imgView.image = initialThumbnail 
    if let thumbnail = object?["photo"] as? PFFile { 
     cell.imgView.file = thumbnail 
     cell.imgView.loadInBackground() 
    } 

    return cell 
} 

с PFTableViewCell имея

class CustomCell: PFTableViewCell { 
    @IBOutlet weak var nameLbl: UILabel! 
    @IBOutlet weak var imgView: PFImageView! 
} 

Кроме того, из другого SO reply, вы можете попробовать это:

let userImageFile = userPhoto["imageFile"] as PFFile 
userImageFile.getDataInBackgroundWithBlock { 
    (imageData: NSData!, error: NSError!) -> Void in 
    if !error { 
     let image = UIImage(data:imageData) 
    } 
} 
+0

Спасибо! Это очень помогает! –