1

我的表“攻击”中有 2 个指针对象(指向 ParseUser)。似乎这些指针对象需要一段时间才能被检索。因此我的代码直接不起作用并给了我异常:

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

然后,我使用 try-catch 块对 fetchIfNeeded 函数进行了必要的处理:

ParseObject battle = null;
try {
   battle = objects.get(0).fetchIfNeeded();
} catch (ParseException e1) {
   // TODO Auto-generated catch block
   e1.printStackTrace();
}
ParseUser attacker1 = battle.getParseUser("Attacker");
Log.i("dontest",attacker1.getUsername());

它仍然返回相同的结果。我什至检查了isDataAvailable函数,它返回了 true。有什么办法解决这个问题吗?

PS:我的查询正好返回我用size()函数检查的 1 行。

这是描述 fetchIfNeeded() 函数的文档。

4

1 回答 1

6

像这样使用您的查询..

ParseQuery<ParseObject> pQueryFromAttack = new ParseQuery<ParseObject>("Attack");
// use include to fetch details while quering----increase loading speed by doing this.
pQueryFromAttack.include("pointer to _user table");
List<ParseObject> listObj = pQueryFromAttack.find();

例如:

 String userName =listObj.get(0).fetchIfNeeded().getString("name");

像这样使用它...

于 2013-11-18T06:37:42.487 回答