安卓解析:无法更新本地用户

8

我有一个自定义的布尔字段在我的自定义ParseUser对象中,名为“Approved”。我们通过web应用程序将该字段从false更改为true。根据文档,我应该可以使用fetchInBackground()方法在更改标志后更新currentUser,示例如下:

ParseUser.getCurrentUser().fetchInBackground(new GetCallback<ParseObject>() {
    @Override
    public void done(ParseObject parseObject, ParseException e) {
        Log.v("qwer", "fetched User: " + ((CustomUser)parseObject).isApproved());
    }
});

尽管已经将批准标记设置为true,但从服务器返回的结果总是false。除非我退出并重新登录,此时currentUser和相应的字段与服务器同步。

为什么fetchInBackground()不能用于本地用户?如果使用不正确,如何更新currentUser。


你确定可以将parseObject直接转换为CustomUser吗? - Shane
是的,我扩展了ParseUser类。从技术上讲,我可以将回调类型定义为CustomUser,但在这个示例中,我只是为了清晰起见进行了转换。 - jwBurnside
自从使用 Parse 以来已经有一段时间了,但是不需要使用 pinInBackground 方法将数据保存到本地存储吗? - OneCricketeer
@cricket_007 这是一个好问题,另一个用户提交了类似的答案,我已经进行了评论。 - jwBurnside
1个回答

1
请查看this链接,重点是使用pinInBackground并在Application类中启用本地数据存储Parse.enableLocalDatastore(yourContext);

更新:

不确定这是否能帮到您,但我有一个与您类似的情况:

我执行典型的user.put("userVerified", true);然后user.saveInBackground来保存指示用户是否已验证的布尔值,然后在下一个活动中我使用user.getBoolean("userVerified")来检索标志...您考虑过这个吗?


1
是的,我熟悉固定对象。我不明白为什么我需要固定currentUser对象,它存在于我的会话期间。我只想更新currentUser,而不是管理另一层本地数据。 - jwBurnside
嗯...看看我的更新答案,不确定是否回答了你的问题,但值得一看。 - Joel Min
谢谢你的更新。这个方法不太可行,因为我们是通过 Web 应用程序来更新标志,而不是客户端。如果我在客户端使用 saveInBackground(),当前用户会自动同步(如果我没记错的话),一切都会很好。 - jwBurnside

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接