Swift 分析collectionView中的显示图像
我有一个带有CollectionView的tableView,在tableView中是用户的详细信息,我正在尝试将属于用户的图像放在CollectionView中 到目前为止,我所有的工作正常,除了图像不正确。上传的每个图像都是为每个用户显示的,我需要将图像与用户匹配…我已经尝试了一段时间,但还没有找到解决方案,所以我希望有人能在这里帮助我 以下是我获取用户详细信息和图像的查询:Swift 分析collectionView中的显示图像,swift,uitableview,parse-platform,Swift,Uitableview,Parse Platform,我有一个带有CollectionView的tableView,在tableView中是用户的详细信息,我正在尝试将属于用户的图像放在CollectionView中 到目前为止,我所有的工作正常,除了图像不正确。上传的每个图像都是为每个用户显示的,我需要将图像与用户匹配…我已经尝试了一段时间,但还没有找到解决方案,所以我希望有人能在这里帮助我 以下是我获取用户详细信息和图像的查询: func loadPosts() { let followQuery = PFQuery(cl
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)
}
})
}
致以最诚挚的问候。我在您的代码中看到了三个问题。首先,在
Posts
查询中,使用whereKey()
方法:query.whereKey(“usernamee”,containedIn:self.followArray)
<代码>用户名拼写错误,这可能会导致一些问题。此外,每次发出查询时,都会从数组中删除所有对象。必须有某种方法在必要时添加和删除数据。(这仅适用于刷新数据的情况。如果未将数据添加到数组,则无需清空它们。)最后,您有一个名为imageArray
的值,该值存储为PFFile
。一个数组可以是多个对象。很难判断每个用户是否有多个图像。(对于解决方案,我假设每个用户只有一个图像。我建议更改密钥的名称以更精确。如果不是这样,请给我写一条评论。)
现在,关于你的实际问题,我相信这是因为你只有一个数组用于所有图像,当你为每个用户显示它时,整个数组都被使用了。为了纠正这一点,我建议以以下格式构建数据结构:[(字符串,图像)]
,其中字符串
是用户名
,而图像
是图像的文件。因此,您可以以元组数组的形式访问用户及其图像
要创建元组数组,我建议:var usersandmagesarray=[(用户名:String,imageFile:PFFile)]()
要添加到阵列,请执行以下操作:
for object in objects!{
usersAndImagesArray.append(object.valueForKey("username") as! String, object.valueForKey("image") as! PFFile)
}
要在设置单元格时访问值,请执行以下操作:
let username = usersAndImagesArray[index.row].username
let imageFile = usersAndImagesArray[index.row].imageFile
您好,哇,我没想到会有这么多信息!关于您在开始时提到的添加和删除必要数据的内容,我确信您是正确的,我将对此进行研究……我遵循了udemy上的几个教程来学习解析,所以我知道的不多!关于我的问题,我尝试了你的解决方案,但似乎什么都没有改变。不幸的是,我拍了两张照片,所以你可以看看我是如何设置的!CollectionView:&Query:Ps。我需要修复解析列中的“usernamee”!!关于“数组将是多个对象”,你也说得对。它可能会有所不同,可能有5张图片,或者根本没有。我不确定我是否理解。您说过表视图中的每一行都有一个单独的集合视图。为了只获取每个用户的图像,您需要创建一个变量来存储表视图的
index.row
,而不是集合视图。我不清楚。它应该是这样的:var indexOfTableViewRow:Int
和file=usersandmagesarray[indexOfTableViewRow].imageFile
我在tableViewCell中有一个collectionView,它根据用户数量重复。在该collectionView中,有一个单元格,用于显示正在显示的用户的图像。我可以把你在上面的评论添加到我的tableView cellForRow吗…?不,相反。该行应位于单元格ForItemAtIndexPath
中,索引来自表视图单元格中的行。