我的联系人有一个列名,名字在Lower和upercase上。我想找到Case.INSENSITIVE的所有内容并且我没有找到任何答案。我应该怎么做?
我这样做:
realm.where(Contact.class).findAllAsync().sort("name")
答案 0 :(得分:1)
截至2020年,Realm确实支持不区分大小写的查询。我在其中一个应用程序中使用了它,并且运行良好:
String searchText = "john"; // Some name
RealmResults<Person> persons = realm.where(Person.class).contains("username", searchText, Case.INSENSITIVE);
它将拉约翰,约翰,约翰等。
答案 1 :(得分:0)
排序方法尚不支持Case.INSENSITIVE标志。您应该获得所有结果,然后手动对其进行排序:
RealResults<Contact> list = realm.where(Contact.class)
.findAll()
.sort("name");
Collections.sort(list, new Comparator<Contact>() {
@Override
public int compare(Contact c1, Contact c2) {
return c1.getName().compareToIgnoreCase(c2.getName());
}
});
答案 2 :(得分:0)
Realm没有针对该问题的原生解决方案。
我已经解决了它使用lowerCases“name”创建一个额外的列,然后通过lowerCase进行排序,如下所示:
realm.where(Contact.class).findAllSortedAsync("lowerCase"));