在使用领域时是否有必要使用RealmObject扩展每个模型类?

Sur*_*net 2 android realm

我正在为我的应用程序使用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;
Run Code Online (Sandbox Code Playgroud)

第二类拥有Party类型的字段.但这并没有扩展RealmObject

public class CreatePurchaseOrder implements Parcelable {
    public int voucherNumber;
    public Date date;
    public Party party;
    String agent;
Run Code Online (Sandbox Code Playgroud)

第三个类为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;
Run Code Online (Sandbox Code Playgroud)

使用此方法,它会生成错误消息的错误消息 屏幕截图

错误消息的屏幕截图

那么有必要使用RealmObject扩展每个Model类吗?

Tim*_*Tim 7

从技术上讲,您不必RealmObject直接从模型类扩展.

文件说:

通过扩展RealmObject基类来创建领域模型类.

这意味着如果你不扩展RealmObject,你的类不是一个Realm模型,因此它不能存储在一个领域.

但是,您也可以使用实现RealmModel界面并注释模型类@RealmClass

@RealmClass
public class MyModel implements RealmModel {

}
Run Code Online (Sandbox Code Playgroud)

提到这里:

为什么模型类需要扩展RealmObject?

我们需要为您的模型类添加Realm特定功能.它还允许我们在API中使用泛型,使其更易于阅读和使用.如果您不想扩展基类,则可以改为实现RealmModel接口.

这里:

扩展RealmObject基类的另一种方法是实现RealmModel接口并添加@RealmClass注释.

这是实现同一目标的不同方法.您遇到的问题是相同的.您不能将普通对象存储在领域中.您必须使用上述两种方法之一将模型类连接到Realm.

请注意,如果您使用第二种方法,则用法不同:

// With RealmObject
myModel.isValid();

// With RealmModel
RealmObject.isValid(myModel);
Run Code Online (Sandbox Code Playgroud)