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