Realm String greaterThan

2019-02-27 23:02发布

问题:

Is there any way to find all (or just the next) RealmObjects with Strings lexicographically greater than the target?

Something like

MyEntry next = realm.where(MyEntry.class)
        .greaterThan("name", current)
        .findAllSorted("name")
        .first();

which did not work, because greaterThan is not implemented for Strings.

回答1:

As a non-db-workaround, you can use

List<MyEntry> l = realm.where(MyEntry.class)
    .findAllSorted("name");
int pos = l.indexOf(entryWithName);
MyEntry next = l.get((pos+1)%l.size());

This does the searching outside of the db. Possibly not as well-performing, and not as readable, but it should work.