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オブジェクトにクエリ演算子の出力を再割り当てすることが本当に必要ですか?この他のスニペットでも同じ結果が得られますか? (ヒント:私は.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();
}
}
ありがとうございました。以前の回答にコメントを追加しましたが、それは消えました。 私は 'equalTo()'の実装を見て、 'return this'で終わります。私はそれが呼び出された同じRealmQueryオブジェクトの状態を(副作用を介して)変更する必要があると思いました。これが本当であれば、再割り当ては不要であることを忘れないでください。 –
あなたは正しいです、再割り当ては必要ありません。わかりやすくするためにそこにあるのです。 – EpicPandaForce
私はこの質問を一度持ち、ソースを読んだので、それは本当です:) – EpicPandaForce