Android 域定义自定义查询条件
我想实现类似的目标。 假设我有一个领域对象Android 域定义自定义查询条件,android,realm,Android,Realm,我想实现类似的目标。 假设我有一个领域对象食物 class Food extends RealmObject { // stuff } 还有一个像这样的功能接口 interface IsHealthy { boolean isHealthy (Food food); } IsHealthy界面提供了一种方法,通过对Food对象进行一些计算来确定食品是否健康 是否有一种方法可以编写使用此条件的领域查询,以便从领域数据库中仅获取健康食品?我一直无法做到这一点,现在我正在做一个变通
食物
class Food extends RealmObject {
// stuff
}
还有一个像这样的功能接口
interface IsHealthy {
boolean isHealthy (Food food);
}
IsHealthy
界面提供了一种方法,通过对Food
对象进行一些计算来确定食品是否健康
是否有一种方法可以编写使用此条件的领域查询,以便从领域数据库中仅获取健康食品
?我一直无法做到这一点,现在我正在做一个变通办法,获取所有食物,并在RealmQueryResult
进入内存后逐个检查它们,但这不知何故是一个黑客行为,效果不好。Realm不支持这种自定义条件。您只能对每个属性执行单个检查,并将这些检查组合起来以过滤领域对象
您可以创建一个如下所示的界面
interface IsHealthy {
RealmQuery isHealthy (RealmQuery<Food> query);
}
希望这有帮助。通过对食物对象进行一些计算来定义computations@EpicPandaForce这取决于接口的实现。理想的id是拥有该接口的许多实现,并在查询领域数据库时将其用作过滤器。realm对象是不可变的。顺便说一句,没有不可变的RealmObject。@EpicPandaForce我的意思是,在进行isHealthy计算时,我没有改变RealmObject。这个问题仍然完全取决于实现的外观。哇!先生,这个答案太离谱了!非常感谢。希望对你有帮助。
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();