2013-11-12 2 views
0

У меня есть 2 объекта-указателя (указывая на ParseUser) в моей таблице «Атака». Кажется, эти объекты-указатели занимают некоторое время, чтобы получить retrieve.Hence мой код напрямую не работал и дал мне исключение:Parse fetchIfNeeded() не работает

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

Я тогда сделал все необходимое, окружающее 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()); 

это еще возвращенная same.I даже проверили с isDataAvailable функции и вернулся true.Any путь вокруг этого?

P.S .: Мой запрос возвращает ровно 1 строку, которую я проверил с помощью функции size().

Вот documentation, описывающий функцию fetchIfNeeded().

ответ

4

Используйте Ваш запрос, как это ..

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"); 

использовать его как это ...

Смежные вопросы