2016-11-11 22 views
2

私はRealmObjectクラスを持っています。私は同じクラスの複数のテーブルが必要です。私は1つのレルム(データベース)でそれを行うことができますか、複数のレルム(各レルムごとに1つのテーブル)を持つ必要があります。同じクラスの複数のレルムテーブル

複数のレルムでなければならない場合、レルムの切り替えプロセスはどのくらいの速さですか?

+0

このテーブルの特定の番号、またはこのテーブルの「N」はありますか? – EpicPandaForce

+0

[この記事、part '"多形性は本当に必要ではなく、わずかに異なる複数のクラスが必要ですが、同じ要素を共有しています "[]](https://medium.com/ @ Zhuinden/realm-effective-other-realm-tips-feb76c5b6072#.oah921cgf) – EpicPandaForce

+0

@EpicPandaForceいいえ、テーブルの数は動的です。そのような情報のチャネルのように言う。ますます多くのチャンネルが追加されます。これらのチャンネルは同じタイプですが、情報が来るだけです。しかし、別々に保管すべき制約があります。 –

答えて

1

同じクラスの複数のテーブルが必要です。

さてあなたは、二つの合理的なオプションがあります。

1)「表」は、この現在のオブジェクトのインスタンスは、次にあなたがテーブルごとに」照会でき

public class MyObject extends RealmObject { 
    @PrimaryKey 
    private String tableAndId; 

    @Index 
    private String table; 

    @Index 
    private long id; 

    // getters, setters 
} 

に所属するかを決定弁別フィールドを追加します":

RealmResults<MyObject> results = realm.where(MyObject.class) 
             .equalTo(MyObjectFields.TABLE, "tableA") 
             .findAll(); 

2)DynamicRealmを使用して手動で作成するテーブルを作成し、手動で作成するスキーマはRealmSchemaを経由します。

DynamicRealm dynamicRealm = DynamicRealm.getInstance(config); 
RealmSchema schema = dynamicRealm.getSchema(); 
RealmObjectSchema objectSchema; 
if(!schema.contains("MyObject_Table_A")) { 
    objectSchema = schema.create("MyObject_Table_A"); 
    objectSchema.addField("id", long.class, FieldAttribute.PRIMARY_KEY); 
    objectSchema.addField("created", Date.class, FieldAttribute.INDEXED); 
    //... 
} else { 
    objectSchema = schema.get("MyObject_Table_A"); 
} 

そして、あなたは、動的な領域に書き込むことができます。

dynRealm.executeTransaction(new DynamicRealm.Transaction() { 
    @Override 
    public void execute(DynamicRealm dynRealm) { 
     DynamicRealmObject dynObj = dynRealm.where("MyObject_Table_A") 
              .equalTo("id", id) 
              .findFirst(); 
     if(dynObj == null) { 
      dynObj = dynRealm.createObject("MyObject_Table_A", id); 
     } 
     dynObj.setDate("created", new Date()); 
    } 
}); 

また、テーブルごとに新しいコンフィギュレーションを持つことができますが、それは無理なオプションのように聞こえるので、私はかろうじてさえたいですそれに言及する。

関連する問題