我想在Realm中進行查詢,但是從字段長度進行篩選。像這樣:按字符串大小進行篩選 - Android
Realm.getDefaultInstance()
.where(Person.class)
.greaterThan("name.length", 10)
.findAll()
我沒有找到任何與它有關的東西。有人知道這個問題的一個很好的解決方案嗎?
在此先感謝
我想在Realm中進行查詢,但是從字段長度進行篩選。像這樣:按字符串大小進行篩選 - Android
Realm.getDefaultInstance()
.where(Person.class)
.greaterThan("name.length", 10)
.findAll()
我沒有找到任何與它有關的東西。有人知道這個問題的一個很好的解決方案嗎?
在此先感謝
1)Realm.getDefaultInstance().where(...
這個結構打開一個領域實例,你將永遠無法關閉,所以不這樣做。
2.)如here所述創建一個「計算屬性」,並根據該查詢進行查詢。
public class Something extends RealmObject {
private String name;
@Index
private int nameLength;
public void setName(String name) {
this.name = name;
this.nameLength = name == null ? 0 : name.length();
}
}
此解決方案適用於Realm-Java 0.88.0及以上版本。
當'realm'where(Something.class).findFrist(); 「如果是這樣,那麼這就要求制定者用一些標準的方式來寫。對?你能澄清一下嗎? – AnixPasBesoin
當你爲該字段賦值時,你可以調用'setName()',這會起作用,是的 – EpicPandaForce
嗨我檢查了你的文件,我找不到任何東西。在https://realm.io/news/nspredicate-cheatsheet/(用於Swift中的Realm)中的NSPredicate Cheatsheet也沒有提及任何這樣的事情。也許效率低下,但我注意到使用正則表達式的選項。你能匹配字符串與檢查字符串長度的正則表達式嗎?例如'/^[a-zA-Z] {10,} $ /' – nbokmans
是的,該工作!不幸的是,我的Realm版本沒有更新,所以在我們決定更新之前我不能使用類似的方法。 – iuri
@nbokmans你不能用realm-android來評估正則表達式,但作爲查詢 – EpicPandaForce