Realm, поиск в списке строк - PullRequest
1 голос
/ 05 апреля 2019

У меня есть элементы (RealmObject) и у них есть штрих-коды (RealmList).Мне нужно запросить, какой элемент содержит искомый штрих-код.

public class Item extends RealmObject {
    @PrimaryKey
    private long id;
    private RealmList<String> barcodes;

Я пробовал это, но это слишком медленно, потому что у меня много предметов, а у элементов несколько штрих-кодов:

for (Item item : realm.where(Item.class).findAll()) {
                    if (item.getBarcodes().contains(barcode)) {
                        itemId = item.getId();
                        return;
                    }
                }

Заранее спасибо.

1 Ответ

1 голос
/ 05 апреля 2019

Не уверен, что список поддержки примитивов запрашивает , но вы можете создать новый класс Barcode, расширяющий RealmObject с полем String

public class Barcode extends RealmObject{
   private String barcodeId;
}

, а затем заменить RealmList<String> barcodes наRealmList<Barcode> barcodes затем запросите вот так

RealmResult<Item> realmResult = realm.where(Item.class).equalTo("barcodes.barcodeId",barcode).findAll();

Также вы можете добавить аннотацию @ Index , которая улучшит скорость запросов (но запись может быть немного медленнее) docs

public class Barcode extends RealmObject{
      @Index
       private String barcodeId;
    }
...