2
我有一個RealmObject類。我想要同一個類的多個表。我可以在單個Realm(數據庫)中執行該操作,還是需要有多個Realm(每個Realm都有一個表)。同一類的多個領域表
如果它必須是多個領域,Realm切換過程有多快?
我有一個RealmObject類。我想要同一個類的多個表。我可以在單個Realm(數據庫)中執行該操作,還是需要有多個Realm(每個Realm都有一個表)。同一類的多個領域表
如果它必須是多個領域,Realm切換過程有多快?
我想要多個同一類的表。
那麼你有兩個合理的方案:
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
順便說一句,請閱讀[這篇文章,部分''我並不真的需要多態性,我只需要多個類別相互略有不同,但共享一些相同的元素「](https://medium.com/ @ Zhuinden /設計這個領域的模式 - 有效和其他領域技巧-feb76c5b6072#.oah921cgf) – EpicPandaForce
@EpicPandaForce不,表的數量是動態的。說它像一個信息渠道。隨着時間的推移,越來越多的渠道將被添加。只有這些信息是通過這些渠道是相同的類型。但是有一些限制,它們應該單獨存儲。 –