简体   繁体   English

Android - Realm如何通过布尔查询

[英]Android - Realm how to query by boolean

I have started to use ´Realm´ and I cannot figure out how to get all the results with the value equals to true . 我已经开始使用'Realm',我无法弄清楚如何获得值等于true的所有结果。

Take a look my code below: 看看我的代码如下:

Java Class Java类

@RealmClass
public class Bookmark extends RealmObject {
    private java.lang.String IdBookMark;
    private boolean BookMarkActive;

    public String getIdBookMark() {
        return IdBookMark;
    }

    public void setIdBookMark(String idBookMark) {
        IdBookMark = idBookMark;
    }

    public boolean isBookMarkActive() {
        return BookMarkActive;
    }

    public void setBookMarkActive(boolean bookMarkActive) {
        BookMarkActive = bookMarkActive;
    }
}

Function: 功能:

private boolean AnyBookMark (){
    Realm realm = Realm.getInstance(getContext());
    RealmQuery<Bookmark> query = realm.where(Bookmark.class);
    query.contains("BookMarkActive","true");
    RealmResults<Bookmark> userBookmarks = query.findAll();
    return userBookmarks.isEmpty();
}

Error: 错误:

FATAL EXCEPTION: main Process: gon250.dublinbikes, PID: 2624 java.lang.IllegalArgumentException: Field 'BookMarkActive': type mismatch. 致命异常:主程序:gon250.dublinbikes,PID:2624 java.lang.IllegalArgumentException:字段'BookMarkActive':类型不匹配。 Was STRING, expected BOOLEAN. 是STRING,期待BOOLEAN。 at io.realm.RealmQuery.getColumnIndices(RealmQuery.java:146) at io.realm.RealmQuery.contains(RealmQuery.java:816) at io.realm.RealmQuery.contains(RealmQuery.java:802) at tabs.Tab2.AnyBookMark(Tab2.java:55) at tabs.Tab2.onCreateView(Tab2.java:33) at io.realm.RealmQuery.getColumnIndices(RealmQuery.java:146)at io.realm.RealmQuery.contains(RealmQuery.java:816)at io.realm.RealmQuery.contains(RealmQuery.java:802)at tabs.Tab2。 tabs.Tab2.onCreateView(Tab2.java:33)上的AnyBookMark(Tab2.java:55)

Version: 版:

compile 'io.realm:realm-android:0.78.0' 编译'io.realm:realm-android:0.78.0'

What is the proper way to get all the results with BookMarkActive equals to true . 使用BookMarkActive获得所有结果的正确方法是什么等于true

Instead of query.contains("BookMarkActive","true"); 而不是query.contains("BookMarkActive","true"); you can do query.equalTo("BookMarkActive", true); 你可以做query.equalTo("BookMarkActive", true); .

Btw, 0.78.0 is a really old version. 顺便说一句,0.78.0是一个非常古老的版本。 I recommend that you upgrade soon ;-) 我建议您尽快升级;-)

Function should be something like this: 功能应该是这样的:

private boolean anyBookMark() {
    Realm realm = Realm.getInstance(getContext());
    RealmQuery<Bookmark> query = realm.where(Bookmark.class);
    query.equalTo("BookMarkActive", "true");
    RealmResults<Bookmark> userBookmarks = query.findAll();
    return userBookmarks.isEmpty();
}

BookMarkActive column should be String type. BookMarkActive列应为String类型。 If it is some other type then corresponding value should be passed rather that "true" 如果是其他类型,则应传递相应的值而不是“true”

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM