如何检查 android 中的 Realm 数据库中是否存在 table/class?

How to check if a table/class exists in Realm database in android?

在某个场景中,我需要检查领域数据库中是否存在我预期的 table/class。因为如果我使用 DynamicRealm -

做这样的查询
  DynamicRealm  dynamicRealm = DynamicRealm.getInstance(myRealmConfig);

  dynamicRealm.where("myExpectedClass").findAll();

然后我遇到了这样的异常 -

Class does not exist in the Realm and cannot be queried: myExpectedClass

所以为了防止这个异常,我需要先确定它是否存在于数据库中

您可以使用:

dynamicRealm.getSchema().contains("myExpectedClass")

我刚刚调试并找到了一些方法来检查这种情况,并制作了一个无异常的可重用方法 -

         /**
         * @param dynamicRealm      The source dynamic realm created using the same realm configuration.
         * @param clazzNameExpected The CASE-SENSITIVE name of the expected class we want to check whatever it is existing in
         *                          realm database or not.
         * @return
         */

       public static boolean isClassExistInRealmDB(DynamicRealm dynamicRealm,String clazzNameExpected) {
            return (dynamicRealm != null && dynamicRealm.getSchema() != null) &&
                    dynamicRealm.getSchema().contains(clazzNameExpected);
        }