我的表“Attack”中有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。可以解决这个问题吗?
P.S。:我的查询返回了我使用size()
函数检查过的1行。
这是描述fetchIfNeeded()函数的documentation。
答案 0 :(得分:5)
像这样使用您的查询..
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");
像这样使用它......