gpt4 book ai didi

android - RealmObject 无效,因此无法复制

转载 作者:行者123 更新时间:2023-11-29 17:19:39 25 4
gpt4 key购买 nike

为什么这段代码会触发

java.lang.IllegalArgumentException: RealmObject 无效,因此无法复制

错误?

realm.beginTransaction();
realm.delete(Booking.class);
final Booking booking = realm.copyFromRealm(
new Booking(
editFragment.getDestination(),
editFragment.getDate()));
realm.commitTransaction();

但是,如果我将其更改为此,则不会抛出异常:

realm.delete(Booking.class);
final Booking booking = realm.createObject(
Booking.class,
UUID.randomUUID().toString());
booking.setDestination(editFragment.getDestination());
booking.setDate(editFragment.getDate());

有什么区别?

Booking 类定义为:

public class Booking extends RealmObject {

@Required
@PrimaryKey
private String id;

@Required
private String destination;

@Required
private Date date;

private int status;
private boolean isNotified;

public Booking() {
this.id = UUID.randomUUID().toString();
this.status = STATUS_UNAVAILABLE;
}

public Booking(String destination, Date date) {
this();
this.destination = destination;
this.date = date;
}

// Getters and setters follow
}

编辑:

发现问题所在:我不小心使用了 copyFromRealm 而不是 copyToRealm。如果你不够小心,看起来自动完成有时会对你不利哈哈。

最佳答案

您必须将有效的 RealmObject 传递到 copyFromRealm(..) 动态创建新实例是不够的,因为新对象不会附加到 Realm。

Makes a standalone in-memory copy of an already persisted {@link RealmObject}.

在您的第二个示例中,您正在创建一个新对象并将其传递给数据库以进行持久化:这是两个截然不同的操作。

关于android - RealmObject 无效,因此无法复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37110468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com