В моем приложении у меня есть метод, который принимает ArrayList
идентификаторов и возвращает RealmList
машин, принадлежащих этим идентификаторам.Создание управляемого RealmList за пределами RealmObject
public RealmList<Machine> getMachinesById(ArrayList<Long> machineIds) {
RealmList<Machine> machines = new RealmList<Machine>();
for (int i = 0; i < machineIds.size(); i++){
Machine m = getMachineById(machineIds.get(i));
if (m != null) {
machines.add(m);
}
}
return machines;
}
getMachineById()
функция просто находит правильную машину для определенного идентификатора.
Я хочу, чтобы фильтровать этот вывод еще немного, однако, когда я пытаюсь получить RealmQuery
делая .where()
, я получаю исключение, сообщающее мне, что я должен поставить этот RealmList
в «управляемом режиме».
Caused by: io.realm.exceptions.RealmException: This method is only available in managed mode
at io.realm.RealmList.where(RealmList.java:425)
Я знаю, что получаю эту ошибку, потому что этот список является автономным и не управляется Realm.
Возможно, важно добавить, что эта функция будет называться довольно много, поскольку она запускается каждый раз, когда список в моем приложении обновляется. Это будет означать, что (если возможно) каждый раз, когда я создаю новый управляемый RealmList.
Мои вопросы:
- Есть ли способ, чтобы позволить этому RealmList быть управляемой Realm?
- Если это возможно, то это проблема, что эта функция вызывается довольно часто
- Есть ли другой (предпочтительный) способ достичь этого (Список идентификаторов> RealmResults/RealmQuery)
Поскольку объекты 'Machine' уже сохранены, и нет необходимости в постоянном использовании этого« RealmList », рекомендуется использовать RealmResults? В более общем смысле: лучше ли использовать RealmResults при передаче недопоставленного подмножества любого набора объектов? – Marcel50506
Да, вам может понадобиться 'RealmQuery.or()', как показано в примере. Кроме того, это не идеальный способ для вашего случая использования, у нас был запрос функции для этого https://github.com/realm/realm-java/issues/841 – beeender