我想实现与此类似的东西。
假设我有一个领域对象Food
。
class Food extends RealmObject {
// stuff
}
像这样的功能界面
interface IsHealthy {
boolean isHealthy (Food food);
}
IsHealthy
接口提供了一种通过对Food
对象进行一些计算来确定Food
是否健康的方法。
有没有办法编写一个使用此条件的领域查询,以便只从领域数据库中获取Healthy Foods
?我一直无法做到这一点,现在我正在通过获取所有食物并在RealmQueryResult
在记忆中一个一个地检查它们来做一个解决方法,但这在某种程度上是一个黑客,并且没有'表现不错。
答案 0 :(得分:1)
Realm不支持此类自定义条件。您只能对每个属性进行单个检查,并将这些检查结合起来过滤您的领域对象。
您可以创建一个看起来像这样的界面
interface IsHealthy {
RealmQuery isHealthy (RealmQuery<Food> query);
}
此界面的一个实现可能如下所示
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();
希望这有用。