我正在为我的应用使用Realm ORM。我有3个模型类,其中两个扩展 RealmObject ,而另一个不扩展。
public class Party extends RealmObject implements Parcelable {
@PrimaryKey
public int id;
public String name;
public String name_en;
public String name_ne;
public String address;
public String phoneNumber;
public String taxRegistrationNumber;
public String partyType;
第二类拥有Party类型的字段。但这并没有扩展RealmObject
public class CreatePurchaseOrder implements Parcelable {
public int voucherNumber;
public Date date;
public Party party;
String agent;
第三个类包含CreatePurchaseOrder的字段并扩展了RealmObject
[public class CreatePurchaseOrderRow extends RealmObject implements Parcelable {
@PrimaryKey
public int id;
private int serialNumber;
private String specification;
private float quantity;
private float rate;
private String remarks;
private boolean fulfilled;
private CreatePurchaseOrder createPurchaseOrder;
使用此方法会生成错误消息 screenshot of error message
所以有必要使用RealmObject扩展每个Model类吗?
答案 0 :(得分:7)
从技术上讲,您不必直接从模型类扩展RealmObject
。
docs说:
通过扩展RealmObject基类来创建Realm模型类。
这意味着如果你不扩展RealmObject
,你的类不是Realm
模型,因此它不能存储在领域中。
但是,您也可以实现RealmModel
界面并使用@RealmClass
@RealmClass
public class MyModel implements RealmModel {
}
如上所述here:
为什么模型类需要扩展RealmObject?
我们需要为您的模型类添加Realm特定功能。它还允许我们在API中使用泛型,使其更易于阅读和使用。 如果您不想扩展基类,则可以改为实现RealmModel接口。
和here:
扩展RealmObject基类的另一种方法是实现RealmModel接口并添加@RealmClass注释。
实现同一目标是一种不同的方式。您遇到的问题是相同的。您不能将普通对象存储在领域中。 必须使用上述两种方法之一将模型类连接到Realm。
请注意,如果您使用第二种方法,则用法不同:
// With RealmObject
myModel.isValid();
// With RealmModel
RealmObject.isValid(myModel);