我正在尝试创建一个高分列表,我可以通过领域为本地数据库创建它。现在,我正在尝试使用解析服务器进行全局高分。在这个领域,我可以这样做,我无法在解析时成功。我怎么能像在境界那样解析它。我只需要将所有分数抛出来解析数据库然后排序并先取10。
private void addNewHighScoreToLocalDatabase(final int score) {
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
LocalHighScore localHighScore = realm.createObject(LocalHighScore.class);
localHighScore.setScore(score);
}
});
}
RealmResults<LocalHighScore> results = realm.where(LocalHighScore.class).sort("score", Sort.DESCENDING).findAll();
int count = results.size();
TextView[] order = {first, second, third, fourth, fifth, sixth, seventh, eight, ninth, tenth};
for (int i = 0; order.length > i; i++) {
order[i].setText(results.get(i).getScore() + "");
}
ParseQuery<ParseObject> query = ParseQuery.getQuery("GlobalHighScore");
query.setLimit(10).orderByDescending("score");
query.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
for (int i = 0; orderScore.length > i; i++) {
orderScore[i].setText(objects.get(i).getString("score")+"");
orderName[i].setText(objects.get(i).getString("name")+"");
}
}
});
我正在尝试制作此查询,但它会返回空列表。我在向数据库添加元素时进行了检查,并且添加时没有任何问题。
答案 0 :(得分:0)
Parse只使用查询就可以做到这一点!
以下是您将在查询中使用的相关方法:
setLimit(int) orderByDescending(java.lang.String)
请注意,如果您将所有得分/高分存储在一个班级中,则此方法有效。假设你有一个HighScore
课程,你只需要将限制设置为10并传递你的分数的关键名称。您可以在locale
添加HighScore
字段,因此当您想获得本地高分时,只需添加whereEqualTo来调用以匹配当前用户的区域设置。
如果每个区域设置都有单独的类(不推荐),要获得全局高分,您需要执行上面的查询,每个类的限制为10,将所有结果拼接在一起,然后在本地排序。不过,我真的建议你参加单一的高分课程。