使用数组数据更新TableView

我在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现在为零?

cellForRowAtIndexPath:

print(picPostArray)
cell.imageView1.imageView!.image = picPostArray[0]
cell.imageView2.imageView!.image = picPostArray[1]
cell.imageView3.imageView!.image = picPostArray[2]
edward217 回答:使用数组数据更新TableView

重新加载表时,您的picPostArray为零,因为尚未设置。这是由于您的异步query.findObjectsInBackground。为了解决这个问题,您只能在设置了picPostArray后重新加载表:

var picPostArray: [UIImage] = [] {
    didSet {
        yourTableView.reloadData()
    }
}
,

在将图像添加到列表之后,只需重新加载tableView。

picPostArray的初始化将是

var picPostArray:[UIImage] = [] // picPostArray not nil 

然后在阵列上设置图像后重新加载tableView。

self.picPostArray.append(UIImage(data: imageData!)!) 
self.tableView.reloadData()

由于异步请求,您需要重新加载tableView。

希望这可以解决此问题。

本文链接:https://www.f2er.com/3168928.html

大家都在问