2017-12-20 18 views
0
遅い

です:は、私は2つのRealmObjectクラス、NodeToUserとタスク持っ

class NodeToUser extends RealmObject { 
    int id; 
    Task task; 
    String otherStuff; 
} 

class Task extends RealmObject { 
    int id; 
    String name; 
} 

は今、私はすべてのタスクを、希望をどこNodeToUser.otherStuff == "foo" という。

私が思いついたすべてが、そうのようNodeToUserにクエリを行っている。そして、

RealmResults<NodeToUser> nodes = realm.where(NodeToUser.class) 
    .equalTo("otherStuff", "foo") 
    .findAll(); 

、結果の上に移動して、実際の作業を集めます。

List<Task> tasks = new ArrayList<>(); 
for (NodeToUser n : nodes) tasks.add(n.getTask()); 

しかし、この結果の繰り返し処理と、私が本当にしたいオブジェクトを収集するには、非常に遅いです - ちょうどラフ値:100用NodeToUserは、それが私のデバイス上で2秒かかりますオブジェクト。

質問:タスクのリストを直接取得できるように、より高速な方法やクエリを作成する方法がありますか?その後、

答えて

1
class NodeToUser extends RealmObject { 
    int id; 
    Task task; 
    String otherStuff; 
} 

class Task extends RealmObject { 
    int id; 
    String name; 

    @LinkingObjects("task") 
    private final RealmResults<NodeToUser> fromNodes = null; 
} 

RealmResults<Task> tasks = realm.where(Task.class) 
     .equalTo("fromNodes.otherStuff", "foo") 
     .findAll(); 
関連する問題