android - 带新国外 Realm 的 Realm 迁移

标签 android realm realm-migration

我创建了一个新的 Realm 对象 (B),并在现有 Realm 对象 (A) 中创建了一个新字段,它引用了新对象 B。在我的迁移文件中,我有这个:

if(!realm.getSchema().contains("B")) {
    realm.getSchema().create("B").addField("name", String.class).addField("resId", int.class);
}

RealmObjectSchema schemaA = realm.getSchema().get("A");

if (!schemaA .hasField("referenceToB")) {
    schemaA .addField("referenceToB", B.class);
}

它不起作用,我得到:java.lang.IllegalArgumentException: Realm doesn't support this field type: B

如何在我的迁移文件中创建 A 中引用 B 的新字段?

最佳答案

根据文档,要添加链接字段,您需要使用 realmObjectSchema.addRealmObjectField()而不是 addField()

if (!schemaA.hasField("referenceToB")) {
    RealmObjectSchema bSchema = schema.get("B");
    schemaA.addRealmObjectField("referenceToB", bSchema);
}

关于android - 带新国外 Realm 的 Realm 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43776965/

相关文章:

Android:当用户按下主屏幕而不是屏幕旋转时如何断开连接?

unit-testing - Realm.io 迁移的 RealmSwift 单元测试

database - 如何引用 Realm 中已经创建的对象?

java - 来自扩展 RealmObject 的类的 IllegalArgumentException (java)

ios - 将新的RLMObject添加到现有 Realm -架构和迁移

ios - 执行从一个列表到另一个更新属性值的 Realm 迁移

android - 使用 iScroll 会阻止键盘显示在我的设备上

android - Android 上的 Card.io 在 Release模式下不显示扫描选项

android - 如何在 Android 中编写 SQL 查询?

realm - posix_fallocate() 失败 : Operation not permitted while opening . Realm 文件