2

我已经开始使用“Realm”,但我无法弄清楚如何获得值等于 true的所有结果。

看看我下面的代码:

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

功能:

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

错误:

致命异常:主进程:gon250.dublinbikes,PID:2624 java.lang.IllegalArgumentException:字段“BookMarkActive”:类型不匹配。为字符串,应为布尔值。在 io.realm.RealmQuery.getColumnIndices(RealmQuery.java:146) 在 io.realm.RealmQuery.contains(RealmQuery.java:816) 在 io.realm.RealmQuery.contains(RealmQuery.java:802) 在 tabs.Tab2。 AnyBookMark(Tab2.java:

版本:

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

BookMarkActive用equals获得所有结果的正确方法是什么true

4

2 回答 2

9

而不是query.contains("BookMarkActive","true");你可以做的query.equalTo("BookMarkActive", true);

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

于 2016-01-14T16:05:14.960 回答
1

函数应该是这样的:

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”

于 2016-01-15T12:21:48.983 回答