我有一个项目(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;
}
}
提前致谢。
不确定原始支持列表查询,但是你可以用String字段创建扩展Barcode
的新类RealmObject
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;
}