2017-01-31 19 views
0

我有一個ArrayList<? extends BaseModel>我想在Realm中存儲。存儲ArrayList <?在Realm中擴展BaseModel>

我有幾個擴展BaseModel的類,它們都存儲在這個ArrayList中。如果我將此存儲在磁盤上,請問Realm會做正確的事情嗎?每個子類可能有它自己的附加成員和方法。

我應該嘗試自己測試一下,但是我遠離了我的開發機器,所以我以爲無論如何我都會問,如果沒有人首先得到答案,我會自己回答。

謝謝!

回答

0

您可以通過電話copyToRealmOrUpdate()存儲BaseModel列表中,如果BaseModel延長RealmObject類的,或者如果實現RealmModel接口:

void storeListToRealm(List<? extends BaseModel> models) { 
    realm.beginTransaction(); 
    realm.copyToRealmOrUpdate(models); 
    realm.commitTransaction(); 
} 

否則,您需要創建「StoreModel」,其中可以儲存到境界,並從BaseModelStoreModel映射。

0

境界生成RealmModuleMediator類具有下面的代碼:

public String getTableName(Class<? extends RealmModel> clazz) { 
    checkClass(clazz); 

    if (clazz.equals(com.yourpackage.somemodel)) { 
     return io.realm.SomeModelRealmProxy.getTableName(); 
    } else if (clazz.equals(com.yourpackage.anothermodel)) { 
     return io.realm.AnotherRealmProxy.getTableName(); 
    } else if ... 

看起來對我來說沒什麼區別,你是否在子類或超類通過。