java - .realm 文件中的 "Any"字段

标签 java android realm

我有一个预初始化的 .realm 文件,我正尝试在 Android Studio 中访问它。我已经使用 Realm 浏览器来找出为我的类建模的确切模式(即字段名称和类型),但我无法弄清楚 Any 是什么comments 的类型字段(见下面的截图)应该在我的代码中。

Realm Browser

根据 this , 该字段只能是 boolean , short , ìnt , long , float , double , String , Date , byte[] , RealmObject 的子类, 或 RealmList<? extends RealmObject> .我为 comments 尝试了很多不同的类型字段,但我继续收到类似于以下内容的错误:

io.realm.exceptions.RealmMigrationNeededException: Invalid type 'String' for field 'comments'

当我尝试允许 comments通过使其类型尽可能通用 RealmObject ,我的代码甚至无法成功编译:

/Users/name/AndroidStudioProjects/Project/app/build/intermediates/classes/debug/io/realm/ReportRealmProxy.java
Error:(147, 17) error: cannot find symbol variable RealmObjectRealmProxy
Error:(285, 48) error: cannot find symbol variable RealmObjectRealmProxy
Error:(330, 52) error: cannot find symbol variable RealmObjectRealmProxy
Error:(374, 41) error: cannot find symbol variable RealmObjectRealmProxy
Error:(420, 41) error: cannot find symbol variable RealmObjectRealmProxy

最后,当我尝试使用 Realm Browser 的自动模型代码生成(文件 -> 保存模型定义 -> 保存 Java 定义...)时,生成了以下代码:

import io.realm.RealmObject

public class Report extends RealmObject {
    private String term;
    private String year;
    private int enrollment;
    private Any comments;
    private RealmList<Response> responses;
    private RealmList<FacultyReport> facultyReports;
}

不幸的是,Android Studio 和我都不明白 Any 是什么类是 - 我在网上找不到任何提及。

任何帮助将不胜感激,因为如果不完全匹配用于创建数据的模型定义,我将无法加载数据。如果有一种方法可以加载除 Report 类/表之外的所有数据,那也可以,因为它当前是空的(如屏幕截图所示)。但是,目前,尽管它是空的,但我无法对其建模,这让我根本无法加载任何对象!

编辑:这是我的Report.java类(class)代码:

import io.realm.RealmList;
import io.realm.RealmObject;

public class Report extends RealmObject {
    private String term;
    private String year;
    private int enrollment;
    private ???? comments;
    private RealmList<Response> responses;
    private RealmList<FacultyReport> facultyReports;

    public ???? getComments() {
        return comments;
    }

    public void setComments(???? comments) {
        this.comments = comments;
    }

    // other getters and setters removed
}

最佳答案

似乎 Realm Swift 遗漏了一些情况,在某些情况下它不会捕获模型中不受支持的属性类型,因此将其视为“任何”类型(也称为“混合”)。

我有一个 PR 解决了现在等待审查的问题:https://github.com/realm/realm-cocoa/pull/2496

虽然我们可能会改变我们正在采取的方法。

关于java - .realm 文件中的 "Any"字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32405539/

相关文章:

java - 如何在非托管实例中 Autowiring 类?

android - 移动应用程序的本地化 - 是否有可用于基础知识的资源?

ios - 将 RLMFile 存储到 Realm swift 3.0 中的数组中

ios - RLMArray 到 RLMLinkingObjects 迁移

ios - 如何在应用程序开始运行代码之前让迁移运行?

java - 数据库连接问题 - 由 : java. sql.SQLRecoverableException 引起:IO 错误:指定了未知主机

java - boolean 帮助 : Testing the parameters for a password JAVA

java - 添加到@ManyToOne 时更新父引用

android - Google Admob 原生广告

android - ViewModel 类实现 LifecycleObserver 可以吗?