我经常看到这样的代码 fragment :
public RealmResults<MyObject> getMyObjects(List<Integer> ids) {
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
RealmQuery<MyObject> query = realm.where(MyObject.class);
for (int i=0; i< ids.size(); i++) {
query = query.equalTo("id", ids.get(i));
if (i != ids.size() -1) {
query = query.or();
}
}
return query.findAll();
} finally {
if (realm != null) realm.close();
}
}
真的有必要将查询运算符的输出重新分配给 RealmQuery 对象吗?其他 fragment 会达到相同的结果吗? (提示:我在调用 .equalTo()
和 .or()
之前删除了 query =
)
public RealmResults<MyObject> getMyObjects(List<Integer> ids) {
Realm realm = null;
try {
realm = Realm.getDefaultInstance();
RealmQuery<MyObject> query = realm.where(MyObject.class);
for (int i=0; i< ids.size(); i++) {
query.equalTo("id", ids.get(i));
if (i != ids.size() -1) {
query.or();
}
}
return query.findAll();
} finally {
if (realm != null) realm.close();
}
}
最佳答案
该查询的功能本质上类似于构建器,因此实际上,返回的构建器的状态设置为给定条件。这意味着该分配是可选的。
这就是像下面这样的结构的查询可以工作的原因:
query.equalTo(...).equalTo(...).beginGroup()....endGroup().findAll()
返回的参数是this
,而不是新的RealmQuery。
关于java - Realm 查询 : do I need to reassign the result of a query operator to the query object every time?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39160737/