获取ParseObject的objectId并保存它

时间:2014-10-31 14:08:56

标签: android parse-platform

我显然遗漏了一些东西。 我开始阅读Parse.com指南,看到了这个:

ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");
gameScore.put("cheatMode", false);
gameScore.saveInBackground();

创建此对象:

objectId: "xWMyZ4YEGZ", score: 1337, playerName: "Sean Plott", cheatMode: false,
createdAt:"2011-06-10T18:33:42Z", updatedAt:"2011-06-10T18:33:42Z"

然后它说 -

  

如果你有objectId,你可以使用ParseQuery

检索整个ParseObject

所以我有两个问题 -

1。如何在解析服务器端创建objectId?

2。如果我没有创建objectId,那么如果它丢失了我就无法重新创建它(例如用户清除app的数据)。所以对远程服务器没有任何意义..我在这里缺少什么?

1 个答案:

答案 0 :(得分:5)

saveInBackground方法存在重载,它占用SaveCallback个对象。在savecallback的done方法中,你应该能够getObjectId()原始的ParseObject,并从服务器给你生成的objectId。

看看这个:

final ParseObject gameScore = new ParseObject("GameScore");
gameScore.put("score", 1337);
gameScore.put("playerName", "Sean Plott");
gameScore.put("cheatMode", false);

gameScore.saveInBackground(new SaveCallback() {
    public void done(ParseException e) {
        if (e == null) {
            // if null, it means the save has succeeded
            String id = gameScore.getObjectId(); // Here you go
        } else {
            // the save call was not successful.
        }
    }
}

现在提出第二个问题。

看起来你正试图挽救一些玩家的进步。如果您在游戏得分对象中添加指针列,则可以轻松检索该游戏得分数据,因为即使重新登录后您的用户身份也不会发生变化。

编辑:示例查询

final ParseQuery query = new ParseQuery("GameScore");
query.whereEqualTo("user", ParseUser.getCurrentUser());
query.findInBackground(new FindCallback() {