基本上我试图显示 3 个用户,我从 _User 类查询以下内容:用户名、个人资料图片和姓名。
然后我想从 Posts 类中查询他们发布的最后一张照片。
这是我设置代码的方式:
let userQuery = PFQuery(className: "_User")
userQuery.limit = 3
userQuery.addDescendingOrder("createdAt")
userQuery.findObjectsInBackgroundWithBlock ({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.profilePicArray.removeAll(keepCapacity: false)
self.usernameArray.removeAll(keepCapacity: false)
self.fullnameArray.removeAll(keepCapacity: false)
self.uuidArray.removeAll(keepCapacity: false)
for object in objects! {
self.profilePicArray.append(object.valueForKey("profilePicture") as! PFFile)
self.usernameArray.append(object.valueForKey("username") as! String)
self.fullnameArray.append(object.valueForKey("firstname") as! String)
self.uuidArray.append(object.valueForKey("uuid") as! String)
}
let imageQuery = PFQuery(className: "Posts")
imageQuery.whereKey("username", containedIn: self.usernameArray)
imageQuery.findObjectsInBackgroundWithBlock({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.lastPicArray.removeAll(keepCapacity: false)
for object in objects! {
self.lastPicArray.append(object.valueForKey("image") as! PFFile)
}
self.collectionView.reloadData()
} else {
print(error!.localizedDescription)
}
})
} else {
print(error!.localizedDescription)
}
})
}
但是当我运行它时,它没有为用户显示正确的图像......我无法理解它,它已经让我抓狂了几个小时!!
最佳答案
后台线程对于获取图像不是问题,但是您的图像查询未设置为以任何特定顺序返回图像,似乎也没有限制每个用户返回的照片数量(除非您有它设置为 Post 对象只能为每个用户保存一个帖子)。您可以通过几种不同的方式处理此问题,但最简单的方法可能是以某种可预测的顺序对您的对象数组进行排序,使用用户名作为排序键,然后当您取回图像时,您可以按相同的顺序对它们进行排序在将它们放入驱动 collectionView 的数组之前基于它们的用户名属性。
另一个注意事项 - 您需要将 .reloadData()
回调放回主线程,否则它会在不可预测的时间发生。
关于ios - 从解析查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35374426/