Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/184.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 域定义自定义查询条件_Android_Realm - Fatal编程技术网

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();