有没有办法找到Realm DB中存在的所有类?
示例,假设您有一个存在Dogs,Cats和Birds的Realm数据库。他们都有名称属性。
您想要搜索名称为" Joe"。
的任何对象Obv你可以说
realm.Where(Dog.class).Contains()
但你能动态地做到吗?
类似的东西:
realm = Realm.getInstance();
List<?> realmObjects = realm.GetAllClassesThatExtendRealmObject();
for(Object obj : realmObjects)
{
//search or what not here
}
由于
答案 0 :(得分:0)
遗憾的是,Realm无法实现这一点,因为所有查询结果必须属于同一类型。你最好的选择是保留一个RealmTypes列表,然后让它们全部实现这样的界面
public interface Named {
public String getName();
public void setName(String name);
}
public class Foo extends RealmObject implements Named {
private String name;
...
}
public class Bar extends RealmObject implements Named {
}
List<Class<? extends RealmObject?>> types = Arrays.asList(Foo.class, Bar.class);
List<Named> namedResults = new ArrayList<>();
for (Class type : types) {
List<Named> results = (List<Named>) realm.where(type).equalTo("name", "Joe");
namedResults.addAll(results);
}
但是这样做意味着你失去了Realm的一个主要好处,即RealmResults是延迟加载的。