我在PFQuery
中调用了viewDidLoad
中的getUserPicPostData
。输出显示数组计数中有3张图像。
ViewdidLoad:
func getUserPicPostData() {
let query = PFQuery(className: "PicPost")
query.whereKey("Username", equalTo: usernameSelected)
query.findObjectsInBackground(block: { (objects: [PFObject]?,error: Error?) in
if let objects = objects {
for object in objects {
self.picLikeArray.append(object["UserLikes"] as! Int)
self.picTimeArray.append(object["UserTime"] as! String)
self.picObjectIdArray.append(object.objectId!)
let userImageFile = object["ImageFile"] as? PFFileObject
userImageFile?.getDataInBackground(block: { (imageData: Data?, error: Error?) in
if error == nil {
self.picPostArray.append(UIImage(data: imageData!)!)
print(self.picPostArray.count)
}
else {
print(error)
}
})
}
}
})
}
然后,我想告诉我的单元格接受imageArray的输入。 PicPostArray现在为nil ??
cellForRowAtIndexPath:
print(picPostArray)
cell.imageView1.imageView!.image = picPostArray[0]
cell.imageView2.imageView!.image = picPostArray[1]
cell.imageView3.imageView!.image = picPostArray[2]
仅在将图像添加到列表后重新加载tableView。
picPostArray
初始化为
var picPostArray:[UIImage] = [] // picPostArray not nil
然后在阵列上设置图像时重新加载tableView。
self.picPostArray.append(UIImage(data: imageData!)!)
self.tableView.reloadData()
由于异步请求,您需要重新加载tableView。
希望这可以解决这个问题。
重新加载表格时,您的picPostArray
为零,因为尚未设置。这是由于您的异步query.findObjectsInBackground
。为了解决这个问题,只有在设置了picPostArray
时,才能重新加载表:
var picPostArray: [UIImage] = [] {
didSet {
yourTableView.reloadData()
}
}