【发布时间】:2017-11-09 12:18:29
【问题描述】:
所以我进行了研究,但没有发现与我的情况相似的任何东西。所有相关代码将在下面发布。我正在为我的后端使用解析,并试图用人们发布的图像创建一个提要。图像和用户名加载正常,但由于显示名称和个人资料图片位于单独的文件中,我不得不单独查询它们。这些查询位于表格单元格本身中。这会导致图像在滚动时跳跃。我知道这是因为细胞出队的方式。有没有更好的方法来查询或关联来自两个解析查询的数据?
var usernameArray = [String]()
var detailArray = [String]()
var uuidArray = [String]()
var postArray = [PFFile]()
var followArray = [String]()
var page: Int = 10
var image: UIImage!
var follow = PFObject(className: "Follow")
func loadFollowers(){
let followerQuery = PFQuery(className: "Follow")
followerQuery.whereKey("follower", equalTo: (PFUser.current()?.username!)! as String)
followerQuery.whereKey("blocker", notEqualTo: (PFUser.current()?.username!)! as String)
followerQuery.findObjectsInBackground { (objects: [PFObject]?, error: Error?) in
if error == nil{
self.followArray.removeAll(keepingCapacity: false)
for object in objects!{
self.followArray.append(object.object(forKey: "following") as! String)
self.followArray.insert((PFUser.current()?.username!)! as String, at: 0)
}
let dataQuery = PFQuery(className: "Posts")
dataQuery.whereKey("user", containedIn: self.followArray)
dataQuery.limit = self.page
dataQuery.addDescendingOrder("_created_at")
dataQuery.findObjectsInBackground(block: { (objects: [PFObject]?, error: Error?) in
if error == nil{
self.usernameArray.removeAll(keepingCapacity: false)
self.detailArray.removeAll(keepingCapacity: false)
self.postArray.removeAll(keepingCapacity: false)
self.uuidArray.removeAll(keepingCapacity: false)
for object in objects!{
self.usernameArray.append(object.object(forKey: "user") as! String)
self.detailArray.append(object.object(forKey: "title") as! String)
self.postArray.append(object.object(forKey: "picture") as! PFFile)
self.uuidArray.append(object.object(forKey: "uuid") as! String)
self.tableView.reloadData()
}
}
})
}
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "postView") as! FeedTableViewCell
cell.userName.text = usernameArray[indexPath.row]
cell.details.text = detailArray[indexPath.row]
cell.uuid.text = uuidArray[indexPath.row]
let query = PFUser.query()
query?.whereKey("username", equalTo:cell.userName.text!)
query?.findObjectsInBackground(){(objects: [PFObject]?, error: Error?) -> Void in
if !(error != nil){
for object in (objects as [PFObject]?)!{
cell.displayName.text = object.object(forKey: "display") as? String
if let userPicture = object.object(forKey: "avi") as? PFFile {
userPicture.getDataInBackground(block: { (imageData: Data?, error: Error?) in
if (error == nil) {
let image = UIImage(data:imageData!)
cell.avi.image = image
}
})
}
}
}
}
aviArray[indexPath.row].getDataInBackground { (data: Data?, error: Error?) in
if error == nil{
cell.avi.image = UIImage(data: data!)
}
}
postArray[indexPath.row].getDataInBackground { (data: Data?, error: Error?) in
if error == nil{
cell.post.image = UIImage(data: data!)
}
}
return cell
}
提前感谢您的帮助。我对所有建议持开放态度,因为我对此不知所措。我不是专家,所以可能有更好的方法来做到这一点。
【问题讨论】:
标签: ios arrays swift parse-platform