使用Realm for Android,我为某些Realm对象提供了String[] objectIds
个唯一ID。我试图以与String[] objectIds
相同的顺序检索相应的Realm对象。
String[] objectIds = new String[]{"1", "10", "2", "3"};
RealmResults<MyRealmObject> myRealmObjects = realm.where(MyRealmObject.class).in("id", objectIds).findAll();
for(MyRealmObject obj: myRealmObjects) {
log(obj.id) //should print 1, 10, 2, 3
}
但是,使用.findAll()似乎会重新排序结果。如何使用&#34;&#34;中检索对象列表?并获得与objectIds数组相同的顺序?有没有更好的方法来解决这个问题?
即。我希望MyRealmObject.id == 1成为列表中的第一个结果,MyRealmObject.id == 10成为列表中的第二个结果,等等(与objectIds数组顺序相同)。
答案 0 :(得分:2)
无法编写简单的查询来执行您想要的操作。最好的选择是做一些事情:
String[] objectIds = new String[]{"1", "10", "2", "3"};
RealmResults<MyRealmObject> myRealmObjects = realm.where(MyRealmObject.class).in("id", objectIds).findAll();
for (String id : objectIds) {
MyRealmObject obj = myRealmObjects.where().equalTo("id", id).findFirst();
log(obj.id);
}
当然,如果你确定存在带有id的对象,你可以稍微简化一下:
String[] objectIds = new String[]{"1", "10", "2", "3"};
for (String id : objectIds) {
MyRealmObject obj = realm.where(MyRealmObject.class).equalTo("id", id).findFirst();
log(obj.id);
}