android - Realm 定义自定义查询条件

标签 android realm

我想实现类似的东西。 假设我有一个 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/

相关文章:

java - 如何在不移动布局 xml 的情况下覆盖 admob 广告

android - 有人可以通过某种方式操纵客户端应用程序来访问我的 Firestore 数据库吗?

ios - 有什么方法可以将 MKPlacemark 实例保存到 Realm?

java - 如何在单个查询中搜索 RealmObject 的 RealmList 字段

android - 如何在可绘制 View 中设置背景 xml 文件?

java - 关闭处理程序,删除回调

android - 弃用的 Androidplot 构造函数

ios - 使用 GCD 的 Realm 数据库包装器

swift - 按一周中没有时间的日子进行过滤(Realm 和 Swift)

swift - Realm 传递选定的类别值