如何将 RealmResults 对象转换为 RealmList?
How to convert RealmResults object to RealmList?
我有一个 RealmResults <Student>
对象。我想将它转换为 RealmList <Student>
对象。有什么建议么?
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultList.subList(0, realmResultList.size()));
如果这对你有用,请尝试告诉我。
RealmList <Student> finalList = new RealmList<Student>();
finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
从 0.87.0 开始
- Added Realm.copyFromRealm() for creating detached copies of Realm objects (#931).
只允许 return 列表 List<E extends RealmObject>
RealmResults
实现了 List
接口,RealmList
也是如此。
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
@JemshitIskenderov 这应该为您复制。
public RealmList<Student> convertResultToList(RealmResult<Student> realResultsList){
RealmList <Student> results = new RealmList<Student>();
for(Student student : realResultsList){
results.add(copy(student));
}
}
private Student copy(Student student){
Student o = new Student();
o.setCreated(student.getCreated());
o.setModified(student.getModified());
o.setDeleted(student.getDeleted());
o.setName(student.getName());
//List more properties here
return o;
}
在新的更新中,您可以使用 copyFromRealm 方法:
RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
代码:
public class RealmCollectionHelper {
public static <C extends RealmModel> RealmList<C> mapperCollectionToRealmList(Collection<C> objects){
if (objects == null){
return null;
}
RealmList<C> realmList = new RealmList<>();
realmList.addAll(objects);
return realmList;
}
}
这是我的要点:https://gist.github.com/jmperezra/9b4708051eaa2686c83ebf76066071ff
另一种方法:
RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
dummy.add(it.next());
}
RealmResults 是 returned 如果一个查询预计会给出一个对象集合 (例如 RealmQuery<E>.findAll()
).否则,单个对象查询将 return a RealmObject.
托管和非托管对象
RealmResults
是 managed 对象,这意味着它们不能在 Realm 事务之外进行操作,并且被限制在创建它们的线程中。将 RealmResults
转换为 RealmList
将使数据 不受管理 ,正如@epicpandaforce 指出的那样,这意味着列表中的对象不再连接到数据库并且基本上是正常的 Java 对象,可以在线程之间传输和操作。
要将 RealmResults
转换为 RealmList
:
RealmResults<User> results = realm.where(User.class).findAll();
RealmList<Users> users = realm.copyFromRealm(results);
对非托管对象的更改不会以任何方式影响数据库中的原始对象,除非 realm.copyToRealm(users)
执行与 copyFromRealm()
相反的操作。请记住,RealmLists
可以是托管的或非托管的,因为来自 RealmResult
的 RealmObject
可以具有以下结构,其中 RealmList
在这种情况下是托管对象:
class User {
int id;
String name;
RealmList<String> petNames;
}
最后,copyFromRealm()
returns a List
所以也可以做
ArrayList<User> users = realm.copyFromRealm(results);
Realm 有一些新功能签入文档
Realm Documentation
Realm 具有 copyfromRealm 函数,我们可以使用该函数将结果转换为列表
RealmList<Student> student=realm.copyfromRealm(Realmresult);
我有一个 RealmResults <Student>
对象。我想将它转换为 RealmList <Student>
对象。有什么建议么?
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultList.subList(0, realmResultList.size()));
如果这对你有用,请尝试告诉我。
RealmList <Student> finalList = new RealmList<Student>();
finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));
从 0.87.0 开始
- Added Realm.copyFromRealm() for creating detached copies of Realm objects (#931).
只允许 return 列表 List<E extends RealmObject>
RealmResults
实现了 List
接口,RealmList
也是如此。
RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);
@JemshitIskenderov 这应该为您复制。
public RealmList<Student> convertResultToList(RealmResult<Student> realResultsList){
RealmList <Student> results = new RealmList<Student>();
for(Student student : realResultsList){
results.add(copy(student));
}
}
private Student copy(Student student){
Student o = new Student();
o.setCreated(student.getCreated());
o.setModified(student.getModified());
o.setDeleted(student.getDeleted());
o.setName(student.getName());
//List more properties here
return o;
}
在新的更新中,您可以使用 copyFromRealm 方法:
RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);
代码:
public class RealmCollectionHelper {
public static <C extends RealmModel> RealmList<C> mapperCollectionToRealmList(Collection<C> objects){
if (objects == null){
return null;
}
RealmList<C> realmList = new RealmList<>();
realmList.addAll(objects);
return realmList;
}
}
这是我的要点:https://gist.github.com/jmperezra/9b4708051eaa2686c83ebf76066071ff
另一种方法:
RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
dummy.add(it.next());
}
RealmResults 是 returned 如果一个查询预计会给出一个对象集合 (例如 RealmQuery<E>.findAll()
).否则,单个对象查询将 return a RealmObject.
托管和非托管对象
RealmResults
是 managed 对象,这意味着它们不能在 Realm 事务之外进行操作,并且被限制在创建它们的线程中。将 RealmResults
转换为 RealmList
将使数据 不受管理 ,正如@epicpandaforce 指出的那样,这意味着列表中的对象不再连接到数据库并且基本上是正常的 Java 对象,可以在线程之间传输和操作。
要将 RealmResults
转换为 RealmList
:
RealmResults<User> results = realm.where(User.class).findAll();
RealmList<Users> users = realm.copyFromRealm(results);
对非托管对象的更改不会以任何方式影响数据库中的原始对象,除非 realm.copyToRealm(users)
执行与 copyFromRealm()
相反的操作。请记住,RealmLists
可以是托管的或非托管的,因为来自 RealmResult
的 RealmObject
可以具有以下结构,其中 RealmList
在这种情况下是托管对象:
class User {
int id;
String name;
RealmList<String> petNames;
}
最后,copyFromRealm()
returns a List
所以也可以做
ArrayList<User> users = realm.copyFromRealm(results);
Realm 有一些新功能签入文档 Realm Documentation
Realm 具有 copyfromRealm 函数,我们可以使用该函数将结果转换为列表
RealmList<Student> student=realm.copyfromRealm(Realmresult);