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