领域,在字符串列表中搜索
Realm, searching in String list
我有一个项目 (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;
}
}
提前致谢。
不确定原始支持列表查询,但您可以创建新的 class 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;
}
我有一个项目 (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;
}
}
提前致谢。
不确定原始支持列表查询,但您可以创建新的 class 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;
}