我想实现类似的东西。
假设我有一个 Realm 对象 Food
.
class Food extends RealmObject {
// stuff
}
还有像这样的函数式界面
interface IsHealthy {
boolean isHealthy (Food food);
}
IsHealthy
接口(interface)提供了一种方法来确定是否 Food
通过对 Food
进行一些计算,健康与否对象。
有没有一种方法可以编写使用此条件的 Realm 查询,以便仅获取 Healthy Foods
来自 Realm 数据库?我一直无法做到这一点,现在我正在通过获取所有食物并在 RealmQueryResult
时一一检查来做一个解决方法。在内存中,但这在某种程度上是一种 hack,并且表现不佳。
最佳答案
Realm 不支持这样的自定义条件。您只能对每个属性进行单一检查,并结合这些检查来过滤您的 Realm 对象。
你可以创建一个看起来像这样的界面
interface IsHealthy {
RealmQuery isHealthy (RealmQuery<Food> query);
}
这个接口(interface)的一个实现看起来像这样
class ForKids implements IsHealthy {
@Override
RealmQuery isHealthy (RealmQuery<Food> query){
return query.lessThan("sugar",10 /*or whatever*/)
.isNotNull("vitamine");
}
}
你可以这样使用它
ForKids forKids = new ForKids();
forKids.isHealthy(realm.where(Food.class)).findAll();
希望这对您有所帮助。
关于android - Realm 定义自定义查询条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42223799/