我将我的应用从sqlite3移动到领域。
在我的旧代码中,查询是集体的,即代码检查一些设置并考虑构建正确的查询:
伪代码 - 之前是怎样的:
var str_where = "alala";
IF (SOMETHING) {
str_where += "asdfasdfdasf";
}else{
if (ANOTHERTHING)
str_where += "trampampam";
else
str_where += "blablabla";
}
query+= "WHERE " + str_where
EXECUTE(query);
现在我没有任何查询字符串可以传递和执行。使用Realm我的查询如下:
伪代码 - 现在的样子:
IF (SOMETHING) {
dbPhrases = realm.where(xPhrase.class)
.contains("alala")
.contains("asdfasdfdasf")
.findAll();
}else{
if (ANOTHERTHING)
dbPhrases = realm.where(xPhrase.class)
.contains("alala")
.contains("trampampam")
.findAll();
else
dbPhrases = realm.where(xPhrase.class)
.contains("alala")
.contains("blablabla")
.findAll();
}
它看起来非常丑陋和混乱
那么有没有办法使用某个变量或者RealmQuery
(我无法实现)来构建查询,然后在我做的时候最终执行它到现在为止?
答案 0 :(得分:1)
尝试
RealmQuery<xPhrase> query = realm.where(xPhrase.class).contains("alala");
if (SOMETHING) {
query.contains("asdfasdfdasf");
} else if (ANOTHERTHING) {
query.contains("trampampam")
} else {
query.contains("blablabla");
}
dpPhrases = query.findAll();