解析引脚将对象提取到本地存储

时间:2015-05-25 23:32:39

标签: android parse-platform

我正在使用Parse.com Android SDK,希望我的应用可以离线工作,也可以在线工作。 我有一个对象"朋友"在一列中包含ParseUser对象。在我的应用程序中,我希望在拥有Friends对象(ParseObject)时获取ParseUser的用户名。当我的应用程序在线时,没有问题。最初我查询所有Friends对象,将所有这些对象固定在我的本地数据存储区中,将它们保存在List中,然后调用((ParseUser) friendList.get(i).get("user")).getUsername()实际上工作正常。但是当应用程序处于脱机状态时,会在此行中引发异常,因为内部'没有互联网连接,ParseUser对象的数据不可用。看起来好友对象被固定了,但是内部ParseUser对象不会被存储所有数据,而只能存储它们的ID以便从服务器获取它们。如何以递归方式存储整个Friends对象,同时影响它的所有内部对象?

// When online
public void loadFriends() {
        final ParseQuery<ParseObject> query = ParseQuery.getQuery(PARSE_FRIENDS_CLASS);
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> list, ParseException e) {
                if (e == null) {
                    ParseObject.pinAllInBackground(list);
                    friends.addAll(list);
                } else {
                    loadFriendsLocally();
                }
                timer.cancel();
            }
        });

// When offline
private void loadFriendsLocally() {
        final ParseQuery<ParseObject> query = ParseQuery.getQuery(PARSE_FRIENDS_CLASS);
        query.fromLocalDatastore();
        query.findInBackground(new FindCallback<ParseObject>() {
            @Override
            public void done(List<ParseObject> list, ParseException e) {
                if (e == null) {
                    friends.addAll(list);
                }
                else {
                    e.printStackTrace();
                }
            }
        });
    }

抛出异常的行(在ArrayAdapter的getView()方法中):

usernameView.setText(((ParseUser) item.get(UserManager.FRIEND_COLUMN)).getUsername());

1 个答案:

答案 0 :(得分:0)

固定Friend对象的内部对象,尤其是当您使用ParseRelation时。