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的数据)。所以对远程服务器没有任何意义..我在这里缺少什么?
答案 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() {