android - 为什么固定到 localDatastore 时会收到 "ParseObject has no data for this key"错误?

标签 android parse-platform

使用以下查询,我想获得一个仅包含列子集的 ParseUsers 列表,定义到 queryColumns 列表中。我成功收到了结果,但是当我尝试将它们固定到本地数据存储区时,我收到了异常:

com.parse.ParseException: java.lang.IllegalStateException: ParseObject has no data for this key. Call fetchIfNeeded() to get the data.

我不明白为什么...当涉及到像 ParseObjects 这样的“复杂”列时,是否应该出现此消息?相反,我查询的数据仅由字符串和 bool 值组成。

final List<String> queryColumns = Arrays.asList(
    "username",         // String
    "email",            // String
    "avatarCountry",    // String
    "avatarId",         // String
    "showCountry"       // Boolean
    "facebookId"        // String
);

ParseQuery<ParseUser> query = ParseUser.getQuery();
query.selectKeys(queryColumns);
query.whereContainedIn("facebookId", fids);

query.findInBackground(new FindCallback<ParseUser>() {

    @Override
    public void done(List<ParseUser> result, ParseException ex) {

        if (ex == null) {
            // do stuff... then pin the results
            ParseUser.pinAllInBackground(CACHED_PLAYERS_LABEL, result, new SaveCallback() {
                @Override
                public void done(ParseException pinEx) {
                    // EXCEPTION HERE: java.lang.IllegalStateException: ParseObject has no data for this key.  Call fetchIfNeeded() to get the data.
                }
            });
        }
    }
});

最佳答案

你的异常已经包含了一个答案:调用 fetchIfNeeded() 来获取数据。 所以改变你的代码如下:

query.findInBackground(new FindCallback<ParseUser>() {
        @Override
        public void done(List<ParseUser> result, ParseException e) {
            ParseObject.fetchAllIfNeededInBackground(result, new FindCallback<ParseUser>() {
                @Override
                public void done(List<ParseUser> list, ParseException ex) {
                    if (ex == null) {
                        ParseObject.pinAllInBackground(CACHED_PLAYERS_LABEL, result, new SaveCallback() {
                            @Override
                            public void done(ParseException e) {

                            }
                        });
                    }
                }
            });
        }
    });

关于android - 为什么固定到 localDatastore 时会收到 "ParseObject has no data for this key"错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24448777/

相关文章:

android - 如何在我的 DAO 中引用可搜索的 FTS4 表而不出现编译器错误?

java - 添加超过10帧时动态壁纸动画强行关闭?

xcode - 删除应用程序后解析设备 token 仍然有效

ios - 解析 Objective C 库在 [PFInternalUtils installationId] 上崩溃

安卓运行时.getRuntime().exec

android - cordova/phonegap 不创建 android 目录

xcode - Swift 2 + 解析 : Array index out of range

ios - Swift:将 Facebook 用户与不在 Parse Server 上工作的现有 PFUser 链接

android - 在 jeromq 中使用轮询

ios - Parse.com PFQueryTableViewController 本地数据存储