Android - Realm 如何通过布尔值查询

Android - Realm how to query by boolean

我已经开始使用“Realm”,但我不知道如何获得所有值 等于 true 的结果。

看看下面我的代码:

Java Class

@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;
    }
}

函数:

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

错误:

FATAL EXCEPTION: main Process: gon250.dublinbikes, PID: 2624 java.lang.IllegalArgumentException: Field 'BookMarkActive': type mismatch. Was STRING, expected 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)

版本:

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

获得 BookMarkActive 等于 true 的所有结果的正确方法是什么。

您可以 query.equalTo("BookMarkActive", true);.

而不是 query.contains("BookMarkActive","true");

顺便说一句,0.78.0 是一个非常旧的版本。我建议您尽快升级 ;-)

函数应该是这样的:

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 列应为字符串类型。如果是其他类型,则应传递相应的值而不是 "true"