Parse: Как я могу получить Relation из локального хранилища данных (… fromLocalDatastore ())?
Я разрабатываю приложение для обучения и использую Parse (parse.com) в качестве источника данных.
Я выполняю загрузку всех объектов моих классов в процессе разбора и сохраняю в локальном магазине, в котором есть Parse. Следующий фрагмент кода, который выполняет одну из загрузок:
public void noticia_getOrUpdate(boolean isUpdate) throws ParseException {
ParseQuery<Noticia> query = new ParseQuery(Noticia.class);
query.orderByDescending("createdAt");
List<Noticia> lNoticias = null;
try {
if (isUpdate) {
lNoticias = query.whereGreaterThan("updatedAt", this.sPref.ultimaAtualizacao_noticia()).find();
if (!lNoticias.isEmpty())
ParseObject.pinAllInBackground(lNoticias);
} else {
query.whereEqualTo("ativo", true);
lNoticias = query.find();
for (Noticia noticia : lNoticias) {
if (noticia.getUpdatedAt().getTime() > this.sPref.ultimaAtualizacao_noticia().getTime())
this.sPref.atualiza_noticia(noticia.getUpdatedAt());
}
ParseObject.pinAllInBackground(lNoticias);
this.sPref.atualiza_isUpdate(true);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
Проблема в том, что я загружаю все свои классы, один из них - тип файла, это файл, который работает как изображение для моих новостей («Noticia»). Я могу загрузить и сохранить все данные на месте хранения, но не могу восстановить, используя следующий код:
public static byte[] NoticiaMidiaRelation(Noticia noticia) {
try {
ParseRelation<Midia> relation = noticia.getImagem();
Midia midia = relation.getQuery().fromLocalDatastore.whereEqualTo("ativo", true).getFirst();
if (midia != null && midia.getFileData() != null)
return midia.getFileData();
} catch (ParseException e) {
e.printStackTrace();
}
return null;
}
Если отменить «fromLocalDatastore» запрос, он ищет сервер и правильно доставляет файл, но не хочет его повторять, потому что, как уже было сказано, такое же изображение уже хранится в локальном хранилище данных.
Еще один способ сделать это - получить отношение Media Id, после чего выполнить поиск для сравнения ObjectId в локальном хранилище, но я думаю, что нет никакого свойства для свойства parent. Но если таковые имеются, могут быть использованы в качестве решения.