0

我有一个ArrayList<? extends BaseModel>我想存储在 Realm 中的内容。

我有几个扩展 BaseModel 的类,它们都存储在这个 ArrayList 中。如果我将它存储在磁盘上,Realm 会做正确的事情吗?每个子类可能有它自己的附加成员和方法。

我可能应该自己尝试测试这个,但我远离我的开发机器,所以我想无论如何我都会问,如果没有人先得到它,我会自己回答。

谢谢你!

4

2 回答 2

1

BaseModel您可以通过调用存储列表copyToRealmOrUpdate(),如果BaseModel扩展RealmObject类或实现RealmModel接口:

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

否则,您需要创建“StoreModel”,您可以将其存储到领域,并从 映射BaseModelStoreModel

于 2017-02-01T03:13:15.430 回答
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 ...

在我看来,无论您传入子类还是超类都没有区别。

于 2017-02-02T13:13:25.650 回答