获取ParseObject的objectId并保存它

Avi*_*bat 2 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();
Run Code Online (Sandbox Code Playgroud)

这创建了这个对象:

objectId: "xWMyZ4YEGZ", score: 1337, playerName: "Sean Plott", cheatMode: false,
createdAt:"2011-06-10T18:33:42Z", updatedAt:"2011-06-10T18:33:42Z"
Run Code Online (Sandbox Code Playgroud)

然后它说 -

如果你有objectId,你可以使用ParseQuery检索整个ParseObject

所以我有两个问题 -

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

2.如果我没有创建objectId,那么如果它丢失了我就不能重新创建它(例如用户清除应用程序的数据).所以远程服务器没有真正的意义..我在这里缺少什么?

jos*_*hus 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.
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在提出第二个问题.

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

编辑:示例查询

final ParseQuery query = new ParseQuery("GameScore");
query.whereEqualTo("user", ParseUser.getCurrentUser());
query.findInBackground(new FindCallback() {
Run Code Online (Sandbox Code Playgroud)