ios - 从解析查询

标签 ios swift parse-platform

基本上我试图显示 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/

相关文章:

ios - UIPageViewController自定义PageControl

ios - uint8_t转换为NSString

ios - 不使用 3rd 方库是否需要 URLSession 才能获取远程数据?

ios - 为什么 Swift 不支持异常?

ios - 使用数据快速转至之前的 VC

ios - 在 ViewWillAppear 完成运行之前调用 CellForRowAtIndexPath

ios - XCode 不打开管理器

iphone - iPhone 应用程序中的谷歌云存储集成

ios - Parse.com 用户在离线时注销

parse-platform - parse.com – 以编程方式取消预定推送