【问题标题】:Parse query orderByDescending not working解析查询 orderByDescending 不起作用
【发布时间】:2015-11-10 05:04:19
【问题描述】:

我有一个查询,在我的提要页面上检索当前用户及其好友列表帖子,我尝试按帖子的创建日期或最新日期对帖子进行排序。这是我打印“createAt”时从代码中得到的结果:

结果非常随机。

这是我的代码

for friend in friendsArray {
            let postQuery = PFQuery(className:"Post")
            postQuery.whereKey("createdBy", equalTo: friend)
            postQuery.includeKey("Song")
            postQuery.includeKey("createdBy")
            postQuery.orderByDescending("createdAt")
            postQuery.findObjectsInBackgroundWithBlock {
                (objects: [AnyObject]?, error: NSError?) -> Void in

                if error == nil {
                    // The find succeeded.
                    //print("Successfully retrieved \(objects!.count) scores.")
                    // Do something with the found objects
                    if let objects = objects as? [PFObject] {
                        for object in objects {

                            let songObject : PFObject = object["Song"] as! PFObject
                            let songTitle: AnyObject? = songObject.objectForKey("songTitle")
                            let songArtist: AnyObject? = songObject.objectForKey("songArtist")
                            let albumCover: AnyObject? = songObject.objectForKey("albumCover")
                            let previewUrl: AnyObject? = songObject.objectForKey("previewUrl")
                            let trackviewUrl : AnyObject? = songObject.objectForKey("trackViewUrl")

                            let timeAgo = object.createdAt
                            let postCaption: AnyObject? = object.objectForKey("postCaption")
                            let postId: AnyObject? = object.objectId
                            let recentTotalComment: AnyObject? = object.objectForKey("recentTotalComment")
                            let recentTotalLike: AnyObject? = object.objectForKey("recentTotalLike")

                            let posterObject = object["createdBy"] as! PFObject
                            let posterUser = object["createdBy"] as! PFUser
                            let posterImage: AnyObject? = posterObject.objectForKey("profilePicture")
                            let posterUsername: AnyObject? = posterObject.objectForKey("username")


                            self.postDictionary = ["title" : songTitle!, "artist" : songArtist!, "previewUrl" : previewUrl! , "caption" : postCaption!, "timeAgo" : self.timeAgoSinceDate(timeAgo!, numericDates: true), "cover" : albumCover!, "postId" : postId!, "posterImage" : posterImage!, "posterUsername" : posterUsername!, "likeCount" : recentTotalLike!, "commentCount" : recentTotalComment! , "otherUser" : posterUser , "trackViewUrl" : trackviewUrl!]

                            self.postArray.addObject(self.postDictionary!)

                            self.likeArray.addObject(recentTotalLike as! String)
                            self.commentArray.addObject(recentTotalComment as! String)

                            print("created at : \(object.createdAt)")

                            self.tbl.reloadData()                                 
                            self.tbl.setContentOffset(CGPointMake(0, self.verticalContentOffset), animated: true)
                            self.refreshControl.endRefreshing()
                        }
                    }
                } else {
                    // Log details of the failure
                    print("Error: \(error!) \(error!.userInfo)")
                }
            }


        }

我如何按创建日期排序我的帖子查询?

【问题讨论】:

  • print("created at : \(songObject.createdAt)")代替print("created at : \(object.createdAt)")有区别吗?
  • @Russell 它是不同的,但仍然是随机的

标签: ios iphone swift parse-platform pfquery


【解决方案1】:

postQuery 被包裹在一个循环中以遍历friendsArray 中的所有朋友。由于查询是在后台执行的,因此在执行查询并等待响应时,循环将继续进行。

这将导致同时执行多个查询和响应,我的猜测是您正在查看来自多个查询的打印语句,这看起来是无序的。

为确保查询排序正确,只执行其中一个查询并打印结果。

最后,您应该不惜一切代价避免执行循环查询,因为它根本无法扩展。

例如,不是将查询包装在循环中并使用

postQuery.whereKey("createdBy", equalTo: friend)

你可以重构你的代码以利用whereKey:containedIn:

postQuery.whereKey("createdBy", containedIn: friendsArray)

【讨论】:

  • 我按照您的建议更改了我的代码,效果很好,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多