如何将RealmResults对象转换为RealmList?

时间:2015-05-08 02:54:34

标签: android realm

我有一个RealmResults <Student>个对象。我想将其转换为RealmList <Student>对象。有什么建议?

10 个答案:

答案 0 :(得分:20)

RealmList <Student> results = new RealmList<Student>();

results.addAll(realmResultList.subList(0, realmResultList.size()));

答案 1 :(得分:13)

请尝试让我知道这是否适合您。

RealmList <Student> finalList = new RealmList<Student>();

finalList.addAll(yourRealmResults.subList(0, yourRealmResults.size()));

答案 2 :(得分:13)

自0.87.0

  
      
  • 添加了Realm.copyFromRealm(),用于创建Realm对象的分离副本(#931)。
  •   

只允许返回列表List<E extends RealmObject>

答案 3 :(得分:9)

RealmResults实现List接口,RealmList也是如此。

RealmList <Student> results = new RealmList<Student>();
results.addAll(realmResultsList);

答案 4 :(得分:2)

在新的更新中,您可以使用 copyFromRealm 方法执行此操作:

RealmList<Student> finalList = realm.copyFromRealm(resultsAnswers);

答案 5 :(得分:0)

@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;
}

答案 6 :(得分:0)

<强> 代码:

keytool -importkeystore -deststorepass password -destkeystore .keystore -srckeystore platform.p12 -srcstoretype PKCS12 -srcstorepass android

keytool -list -v -keystore .keystore

这是我的要点:https://gist.github.com/jmperezra/9b4708051eaa2686c83ebf76066071ff

答案 7 :(得分:0)

另一种方法:

RealmList<YourClass> dummy = new RealmList<>();
Iterator<YourClass> it = realmResultsList.listIterator();
while (it.hasNext()) {
      dummy.add(it.next());
}

答案 8 :(得分:0)

如果期望查询提供对象(例如RealmQuery<E>.findAll()的集合,则返回

RealmResults 。否则,单个对象查询将返回 RealmObject

托管和非托管对象
RealmResults托管对象,这意味着它们无法在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可以被管理或取消管理,因为来自RealmObject的{​​{1}}可以具有以下结构,其中RealmResult在这种情况下是托管对象:

RealmList

最后,class User { int id; String name; RealmList<String> petNames; } 会返回copyFromRealm(),因此也可以

List

答案 9 :(得分:0)

Realm具有一些新功能签入文档 Realm Documentation

Realm具有copyfromRealm函数,可用于将结果转换为列表

RealmList<Student> student=realm.copyfromRealm(Realmresult);