我想重新加載tableView當這個循環完成,但每當我嘗試把self.tableView.reloadData()在循環之外,循環返回0.我想這是由於我在後臺獲取數據。我可以做什麼,以便在循環完成後重新加載。reloadData循環解析後
func loadData() {
var query = PFQuery(className: "Items")
query.includeKey("user")
query.getObjectInBackgroundWithId(itemId) {
(itemObject: PFObject!, error: NSError!) -> Void in
if (error == nil) {
var userObject = itemObject.objectForKey("user") as PFObject
let userImageFile = userObject.objectForKey("file") as PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData!, error: NSError!) -> Void in
if error == nil {
let image = UIImage(data:imageData)
self.detailDic?.setObject(itemObject.objectForKey("title"), forKey: "title")
self.detailDic?.setObject(itemObject.objectForKey("description"), forKey: "desc")
self.detailDic?.setObject(itemObject.objectForKey("location"), forKey: "point")
self.detailDic?.setObject(userObject.objectForKey("name"), forKey: "name")
self.detailDic?.setObject(userObject.objectForKey("gender"), forKey: "gender")
self.detailDic?.setObject(image, forKey: "image")
var relation = itemObject.relationForKey("file") as PFRelation
var imageQuery = relation.query() as PFQuery
imageQuery.findObjectsInBackgroundWithBlock { (imageObj: [AnyObject]!, error1: NSError!) -> Void in
if error1 == nil {
var imageDic:NSMutableArray = NSMutableArray()
let group = dispatch_group_create()
for obj in imageObj {
var imageObject = obj as PFObject
var thumbnail = imageObject.objectForKey("file") as PFFile
// Important: enter the group *before* starting the background task.
dispatch_group_enter(group)
thumbnail.getDataInBackgroundWithBlock {
(imageData: NSData!, error: NSError!) -> Void in
if error == nil {
let theImage = UIImage(data:imageData)
theImage.CGImage
self.imageArray!.addObject(theImage)
dispatch_group_leave(group)
}
}
}
dispatch_group_notify(group, dispatch_get_main_queue()) {
self.tableView?.reloadData()
}
}
}
}
}
}
}
}
如果'imageObj'的最後一個元素是不是最後完成加載什麼? – 2014-09-24 18:11:31
我想你的答案還是比較好的。如果有人想在最後一個循環後執行某些操作,這只是一個選項。 (這是線程初學者所要求的) - 如果有人正在尋找類似這樣的東西 – derdida 2014-09-24 18:14:22