Ich möchte mehrere Tabellen der gleichen Klasse.
Nun haben Sie zwei vernünftige Optionen:
1.) fügen Sie ein Feld, das Scheidungs
public class MyObject extends RealmObject {
@PrimaryKey
private String tableAndId;
@Index
private String table;
@Index
private long id;
// getters, setters
}
gehört Dann können Sie pro Tabelle abfragen“, die„Tabelle“diese aktuelle Objektinstanz bestimmt „:
RealmResults<MyObject> results = realm.where(MyObject.class)
.equalTo(MyObjectFields.TABLE, "tableA")
.findAll();
2.) erstellen jede Tabelle, die Sie dynamisch DynamicRealm
und manuelle Erstellung wollen mit der das Schema über die 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");
}
Und dann können Sie in den dynamischen Bereich schreiben:
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());
}
});
Sie können auch eine neue Konfiguration pro Tisch, aber das klingt wie eine unzumutbare Option, so dass ich kaum noch wollen um es zu erwähnen.
Haben Sie eine bestimmte Nummer dieser Tabelle oder "N" dieser Tabelle? – EpicPandaForce
BTW bitte lesen [diesen Artikel, Teil '" Ich brauche nicht wirklich Polymorphismus, ich brauche nur mehrere Klassen, die leicht voneinander abweichen, aber einige der gleichen Elemente teilen "'] (https://medium.com/ @ Zhuinden/Designing-the-Schema-of-Realm-effektiv-und-anderen-Bereich-Tipps-feb76c5b6072 # .oah921cgf) – EpicPandaForce
@EpicPandaForce Nein, die Anzahl der Tabellen sind dynamisch. Sage es wie ein Informationskanal. Mehr und mehr Kanäle werden im Laufe der Zeit hinzugefügt. Die einzige Information ist, dass diese Kanäle vom selben Typ sind. Aber es gibt einige Einschränkungen, dass sie getrennt gespeichert werden sollten. –