“io.realm.exceptions.RealmException:'[class_name]'在当前架构中不存在”,当调用realm.deleteAll()[Realm 4.1.1]

时间:2017-11-09 11:49:26

标签: java android realm

我有一个RealmAssignment类,它是我的Realm模块的一部分。删除它并将其从模块中删除后,我在执行realm.deleteAll()时开始出错。以下是错误跟踪的一部分:

Caused by: io.realm.exceptions.RealmException: 'RealmAssignment' doesn't exist in current schema.
   at io.realm.internal.ColumnIndices.getColumnInfo(ColumnIndices.java:112)
   at io.realm.RealmSchema.getColumnInfo(RealmSchema.java:250)
   at io.realm.ImmutableRealmSchema.get(ImmutableRealmSchema.java:41)
   at io.realm.RealmSchema.getAll(RealmSchema.java:88)
   at io.realm.BaseRealm.deleteAll(BaseRealm.java:602)
   at io.realm.Realm.deleteAll(Realm.java:135)`  

我在互联网上搜索过这个错误,这些是我到目前为止所尝试的内容:

  • 已禁用即时运行
  • -keepnames public class * extends io.realm.RealmObject添加到我的proguard-rules.pro文件
  • 在所有其他apply plugin: 'realm-android'来电
  • 之后,将apply plugin放入应用级gradle文件中
  • 清理,重建,使缓存无效并重新启动

以上都没有帮助。

我使用以下代码初始化领域:

new RealmConfiguration.Builder()
   .modules(new RealmDefaultModule())
   .deleteRealmIfMigrationNeeded()
   .build();

我还搜索了整个项目,以获取对“RealmAssignment”类或包含它的文本的任何引用,但我没有找到。

非常感谢任何帮助。

编辑:

这是我的RealmDefaultModule课程:

@RealmModule(classes = {RealmCheckInVolunteerEvent.class,
        RealmCheckInLocation.class,
        RealmCheckInStaffEvent.class,
        RealmEmail.class,
        RealmInventoryItem.class,
        RealmMember.class,
        RealmMemberAssignment.class,
        RealmOrganizationalUnit.class,
        RealmShift.class,
        RealmSize.class,
        RealmSizeType.class,
        RealmSMS.class,
        RealmTimelineItem.class,
        RealmUser.class,
        RealmUserOrgUnit.class,
        RealmUserSizeType.class,
        RealmUserSize.class})
public class RealmDefaultModule {
}

我将RealmDefaultConfiguration初始化为单例,这是全班:

public class RealmDefaultConfiguration {

    private static RealmConfiguration myConfig;

    public static synchronized RealmConfiguration getInstance() {
        if (myConfig == null) {
            myConfig = new RealmConfiguration.Builder()
                    .modules(new RealmDefaultModule())
                    .deleteRealmIfMigrationNeeded()
                    .build();
        }
        return myConfig;
    }
}  

(你觉得这可能有问题吗?)

我将我的默认配置设置为Application类中的上述内容,如下所示:

Realm.init(this);
Realm.setDefaultConfiguration(RealmDefaultConfiguration.getInstance());  

然后在我的MainActivity中,我打电话给:

Realm realm = Realm.getDefaultInstance();
realm.executeTransaction(new Realm.Transaction() {
            @Override
            public void execute(Realm realm) {
                realm.deleteAll();
            }
        });
realm.close();

0 个答案:

没有答案