2
私はRealmObjectクラスを持っています。私は同じクラスの複数のテーブルが必要です。私は1つのレルム(データベース)でそれを行うことができますか、複数のレルム(各レルムごとに1つのテーブル)を持つ必要があります。同じクラスの複数のレルムテーブル
複数のレルムでなければならない場合、レルムの切り替えプロセスはどのくらいの速さですか?
私はRealmObjectクラスを持っています。私は同じクラスの複数のテーブルが必要です。私は1つのレルム(データベース)でそれを行うことができますか、複数のレルム(各レルムごとに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());
}
});
また、テーブルごとに新しいコンフィギュレーションを持つことができますが、それは無理なオプションのように聞こえるので、私はかろうじてさえたいですそれに言及する。
このテーブルの特定の番号、またはこのテーブルの「N」はありますか? – EpicPandaForce
[この記事、part '"多形性は本当に必要ではなく、わずかに異なる複数のクラスが必要ですが、同じ要素を共有しています "[]](https://medium.com/ @ Zhuinden/realm-effective-other-realm-tips-feb76c5b6072#.oah921cgf) – EpicPandaForce
@EpicPandaForceいいえ、テーブルの数は動的です。そのような情報のチャネルのように言う。ますます多くのチャンネルが追加されます。これらのチャンネルは同じタイプですが、情報が来るだけです。しかし、別々に保管すべき制約があります。 –