2016-04-03 7 views
6

私はカスタムのParseUserオブジェクトにApprovedという名前のカスタムブール値フィールドを持っています。このフィールドは、Webアプリケーションを介してfalseからtrueに変更されます。文書によると、私はこのように、)fetchInBackground(とのフラグを変更した後であるCurrentUserを更新することができるはずです。Android Parse:ローカルユーザーを更新できません

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()が動作しないのはなぜですか?私が間違って使用している場合、現在のユーザを更新するにはどうすればよいですか?

+0

parseObjectをCustomUserにキャストできますか? – Shane

+0

ええ、私はParseUserクラスを拡張しました。技術的には、私はコールバックタイプをCustomUserとして定義できましたが、この例ではわかりやすくするためにキャストしました。 – jwBurnside

+0

これは、Parseを使ってからしばらくしていますが、ローカルデータストアに保存するために 'pinInBackground'を実行する必要はありませんか? –

答えて

1

thisリンクを参照してください。pinInBackgroundを使用し、ApplicationクラスにParse.enableLocalDatastore(yourContext);のローカルデータストアを有効にすることがポイントです。


更新:

これはあなたを助けるでしょうが、私はあなたと似たような状況持っているかどうかわからない:

私は、ユーザーかどうかを示すboolean値を保存するために、その後、典型的なuser.put("userVerified", true);user.saveInBackgroundんがが検証されている場合は、次のアクティビティでuser.getBoolean("userVerified")を使用してフラグを取得します。これは考慮してもよいでしょうか?

+0

はい、私はピン留めに精通しています。私はcurrentUserオブジェクトをピンで止めなければならない理由を理解していません。セッションの間存在します。私は、ローカルデータの別の層を管理するのではなく、currentUserを更新したいだけです。 – jwBurnside

+0

うーん...私の更新された答えを見て、それがあなたの質問に答えるかどうかは分かりませんが、一見価値があるかもしれません。 –

+0

更新いただきありがとうございます。これは、クライアント側ではなくwebapp経由でフラグを更新するため、うまく動作しません。私はsaveInBackground()クライアント側を使用する必要があります、currentUserは(私が正しく覚えている場合)それ自体を同期させるとすべてがうまくいくでしょう。 – jwBurnside

関連する問題