gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 14:13:49 25 4
gpt4 key购买 nike

使用以下查询,我想获得一个仅包含列子集的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com