我有一个带有CollectionView的tableView,在TableView中是用户的详细信息,我试图将属于用户的图像放在collectionView中。
到目前为止,除了图像不正确外,我还能正常工作。每个上传的图片都显示给每个用户,我需要将图片与用户相匹配......我已经尝试了一段时间而没有找到解决方案,所以我希望有人可以帮助我!
以下是获取用户详细信息和图片的查询:
func loadPosts() {
let followQuery = PFQuery(className: "Follows")
followQuery.whereKey("follower", equalTo: PFUser.currentUser()!.username!)
followQuery.findObjectsInBackgroundWithBlock ({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.followArray.removeAll(keepCapacity: false)
for object in objects! {
self.followArray.append(object.valueForKey("following") as! String)
}
self.followArray.append(PFUser.currentUser()!.username!)
let query = PFQuery(className: "Posts")
query.whereKey("usernamee", containedIn: self.followArray)
query.addDescendingOrder("createdAt")
query.findObjectsInBackgroundWithBlock({ (objects:[PFObject]?, error:NSError?) -> Void in
if error == nil {
self.usernameArray.removeAll(keepCapacity: false)
self.imageArray.removeAll(keepCapacity: false)
self.uuidArray.removeAll(keepCapacity: false)
for object in objects! {
self.usernameArray.append(object.valueForKey("username") as! String)
self.imageArray.append(object.valueForKey("imageArray") as! PFFile)
self.uuidArray.append(object.valueForKey("uuid") as! String)
}
self.tableView.reloadData()
} else {
print(error!.localizedDescription)
}
})
} else {
print(error!.localizedDescription)
}
})
}
最好的问候。
答案 0 :(得分:0)
我在代码中看到了三个问题。首先,在Posts
查询中,您使用whereKey()
方法:query.whereKey("usernamee", containedIn: self.followArray)
。 username
拼写错误,这可能会导致一些问题。此外,每次发出查询时都会从阵列中删除所有对象。必要时必须有一些方法来添加和删除数据。 (这仅适用于刷新数据。如果尚未向数组添加数据,则无需清空它们。)最后,您有一个名为imageArray
的值,存储为{{1} }。数组将是多个对象。很难判断每个用户是否有多个图像。 (对于解决方案,我假设每个用户只有一个图像。我建议更改密钥的名称更精确。如果不是这样,请写下评论。)
现在,关于您的实际问题,我认为这是因为您只有一个阵列用于所有图像,当您为每个用户显示它时,将使用整个阵列。为了纠正这个问题,我建议使用以下格式构建数据结构:PFFile
,其中[(String, Image)]
是String
,username
是图像的文件。因此,您可以将用户及其图像作为一组元组进行访问。
要创建元组数组,我建议:Image
要添加到数组:
var usersAndImagesArray = [(username: String, imageFile: PFFile)]()
在设置单元格时访问值:
for object in objects!{
usersAndImagesArray.append(object.valueForKey("username") as! String, object.valueForKey("image") as! PFFile)
}