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"
我已经开始使用“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"