我有“fetchData”方法填充我的“imagesArray”:
func fetchData(){
let imageQuery = PFUser.query()
imageQuery?.whereKey("username", containedIn: namesArray)
imageQuery!.findObjectsInBackgroundWithBlock { (objects: [PFObject]?, error: NSError?) -> Void in
if error == nil {
for object in objects! {
print("\(object["username"] as! String)")
self.imagesArray.append(object["image"] as! PFFile)
if self.imagesArray.count == self.namesArray.count {
self.tableView.reloadData()
print("Names Order: \(self.namesArray)")
}
}
} else {
print("error: \(error?.localizedDescription)")
}
}
}
我有tableView:cellForRowAtIndexPath方法,该方法使用此数组来填充UIImageView实例:
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! ChatsCell
cell.nameLabel.text = namesArray[indexPath.row]
if imagesArray.count == namesArray.count && self.imagesLoaded == false{
imagesArray[indexPath.row].getDataInBackgroundWithBlock { (imageData: NSData?, error: NSError?) -> Void in
if error == nil {
let image = UIImage(data: imageData!)
cell.imageView?.image = image
self.tableView.reloadData()
self.imagesLoaded = true
}
}
}
return cell
}
实际上我使用if条件等待我的数组“imagesArray”被另一个方法的查询填充,我使用变量“imagesLoaded”来阻止reloadData方法的无限调用。 如果没有条件,我怎么能写这个方法?