2
我经常看到的代码片段是这样的:RealmQuery:我是否需要每次将查询运算符的结果重新分配给查询对象?
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对象?这个其他片段是否会达到相同的结果? (提示:我已删除query =
调用之前.equalTo()
和.or()
)
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();
}
}
谢谢我在之前的回答中加入了一条评论,但是它已经消失了。 我查看了'equalTo()'的实现,并以'return this'结尾:我认为它必须修改它被调用到的(通过副作用)相同的RealmQuery对象的状态。如果这是真的,那么可以确定不需要重新分配吗? –
你是对的,重新分配是不需要的。这只是为了清晰我认为。 – EpicPandaForce
我有这个问题一次,通读源代码,所以它是真的:) – EpicPandaForce