在android中使用动态领域

时间:2016-08-08 06:20:17

标签: android realm

有没有人在android中使用动态领域。我在网上搜索了很多但我找不到使用动态领域数据库的任何示例代码,除了android中的this领域文档

RealmConfiguration realmConfig = new RealmConfiguration.Builder(this).build();
    DynamicRealm realm1 = DynamicRealm.getInstance(realmConfig);

 // In a DynamicRealm all objects are DynamicRealmObjects
    DynamicRealmObject person = realm1.createObject("Person");

// All fields are accessed using strings
    String name = person.getString("name");
    int age = person.getInt("age");

// An underlying schema still exists, so accessing a field that does not exist
// will throw an exception
    person.getString("I don't exist");

// Queries still work normally
    RealmResults<DynamicRealmObject> persons = realm1.where("Person")
            .equalTo("name", "John")
            .findAll();

但是当我运行此代码时,我收到此错误消息。

  The class class_Person doesn't exist in this Realm.     

任何人都可以帮我解决此问题并向我展示代码示例吗?

2 个答案:

答案 0 :(得分:1)

DynamicRealm不会自动生成任何模式,因此如果您有Person模型类,则在通常使用Realm.getInstance()打开Realm之前无法动态访问它(因为这将创建模式) 。否则,您必须手动使用DynamicRealm.getSchema()

创建Person类

答案 1 :(得分:0)

为了在realmDB中创建现有模式的新实例,您必须通过调用如下所述的realm方法beginTransaction和commitTransaction中的realm方法createObject来创建实例。

realm.beginTransaction();
DynamicRealmObject person = realm.createObject("Person");
person.setString("name", "kiran");
person.setInt("age", 29);
realm.commitTransaction();

以及setString和setInt方法是DynamicRealmObject的方法。 请仔细阅读文档https://realm.io/docs/java/latest/api/io/realm/DynamicRealm.html,以进一步了解DynamicRealms。