2016-06-01 9 views
0

私は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); 

そして今、私ドン渡して実行するクエリ文字列はありません。

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(私は実装できませんでした)途中でクエリを構築し、今までそれをやっていたように最後に実行しますか?

答えて

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(); 
+0

を試してみて、レルム内のワイルドカードに対するサポートはありますか?または、代わりにSQLのSELECT *を実行する方法は、 "BLA%"のようなものなので、文字列は 'Bla'で始まり、何かで終わるでしょうか? –

+0

まだ、ありません。進捗状況はhttps://github.com/realm/realm-java/issues/1377で確認できます。また、RealmQuery.contains()はあなたの問題の一部を解決するかもしれません。 – beeender

+1

'RealmQuery.beginsWith()'を試してください – beeender