Swift 识别用户在解析后端中的高分排名

Swift 识别用户在解析后端中的高分排名,swift,parse-platform,Swift,Parse Platform,我开发了一个简单的Swift iOS游戏,在Parse中存储了高分。保存和检索数据工作正常。我现在想做的是实现一个用户排名功能,它将显示用户的高分如何与其他玩家排名。实际上,这意味着我需要: 解析中高分的总数 用户在该列表中的高分排名 若Parse并没有任何查询限制,那个么对于像我这样的新手来说,这将相对容易实现。然而,它确实如此,我只是不知道如何以一种方式实现它,使它仍然有效1,2,即使有例如100000个高分 在Parse中存储的所有其他高分中,识别当前用户排名的可行方法是什么?我不想使用c

我开发了一个简单的Swift iOS游戏,在Parse中存储了高分。保存和检索数据工作正常。我现在想做的是实现一个用户排名功能,它将显示用户的高分如何与其他玩家排名。实际上,这意味着我需要:

解析中高分的总数 用户在该列表中的高分排名 若Parse并没有任何查询限制,那个么对于像我这样的新手来说,这将相对容易实现。然而,它确实如此,我只是不知道如何以一种方式实现它,使它仍然有效1,2,即使有例如100000个高分

在Parse中存储的所有其他高分中,识别当前用户排名的可行方法是什么?我不想使用countObjects,因为我相信当对象数量增加时它会失败。

您是否使用countObjectsInBackground而没有完成块?因为那时我相信你可能会被异步问题搞得一团糟,但是使用countObjectsInBackgroundWithBlock方法非常简单,也非常安全


我不认为countObjectsInBackgroundWithBlock很容易。。。你真的有打破它的经验吗?因为我觉得你可以很容易地完成你想在这里做的事情,把这个调用嵌套两次,在上面加上一个等于或大于的调用。你想过那件事吗?我将发布一些示例代码作为您的答案,以防万一。countObjects是否也限制为1000?还是我误解了?如果有限制,那么在我看来,如果我需要绕过这个限制,它很有可能被打破。不确定你是否看到了上面的评论。如果有超过1000个对象,这会不会中断?或者我是否误解了它的工作原理?请参阅更新:看起来计数查询可能没有该限制,但如果有大量条目,则可能会变得非常缓慢。
func getUserPosition() {
        let totalQuery = PFQuery(className: "highScores")
        totalQuery.countObjectsInBackgroundWithBlock { (number, error) -> Void in
            if error == nil {
                //your total number is the number var passed here
                let positionQuery = PFQuery(className: "highScores")
                positionQuery.whereKey("score", greaterThanOrEqualTo: userHighScore)
                positionQuery.countObjectsInBackgroundWithBlock({ (position, error) -> Void in
                    //your user's position is the position var passed here
                })
            }
        }
    }