2017-01-31 20 views
0

У меня есть ArrayList<? extends BaseModel>, который я хотел бы хранить в Realm.Хранение ArrayList <? extends BaseModel> в Realm

У меня есть несколько классов, которые расширяют BaseModel, и все они хранятся в этом ArrayList. Будет ли Realm делать правильные вещи, если я храню это на диске? У каждого дочернего класса могут быть свои дополнительные члены и методы.

Я, наверное, просто попробую проверить это самостоятельно, но я не вдалеке от своей машины-разработчика, поэтому подумал, что я все равно спрошу и ответим на него, если никто не доберется до него первым.

Спасибо!

ответ

0

Вы можете сохранить список BaseModel вызовом copyToRealmOrUpdate(), если BaseModel продлить из RealmObject класса или реализации RealmModel интерфейса:

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

В противном случае, вам нужно создать «StoreModel», который можно хранить в области, и отображение от BaseModel до StoreModel.

0

Realm генерирует 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 ... 

кажется мне, что это не имеет никакого значения, передавать ли вы в подкласс или суперкласс.