【发布时间】:2017-07-19 02:46:59
【问题描述】:
我遇到了一个问题,我删除了一个 RealmObject(并使用 StethoRealm 确认它已经消失),但是当我创建并保存一个具有相同变量值的新 RealmObject 时,删除的 RealmObject 与我的新 RealmObject 一起重新出现。
使用下面的对象 - 我通过匹配“id”来删除 myObject1,但是当我创建一个具有相同“名称”的新 MyObject myObject2 时,两个对象都出现在我的领域中
关于为什么会发生这种情况的任何提示?
例子:
public class MyObject extends RealmObject {
@PrimaryKey
private String id;
private String name;
// getters and setters
}
编辑
删除通话
@Override
public void deleteMyObjectById(final String id, final OnDeleteMyObjectById callback) {
Realm realm = new MyRealmConfiguration().getDefaultRealm();
final RealmResults<MyObject> myObjects = realm.where(MyObject.class).equalTo(RealmTable.MyObject.ID, id).findAll();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
myObjects.deleteAllFromRealm();
if (callback != null) {
callback.onSuccess();
}
}
});
realm.close();
}
添加通话
@Override
public void addMyObject(MyObject myObject, OnSaveMyObjectCallback callback) {
Realm realm = new MyRealmConfiguration().getDefaultRealm();
realm.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
realm.copyToRealmOrUpdate(myObject);
if (callback != null) {
callback.onSuccess();
}
}
});
realm.close();
}
【问题讨论】:
-
我不知道您使用 Real 删除和创建新对象的方式,但您应该使用领域实例进行删除,然后获取一个新的领域实例进行创建,如果您使用现有领域实例创建,它仍然是对旧数据库的引用,然后删除的对象仍然出现
-
以上代码不足以排查这个问题。您能否添加一些代码,包括删除和创建对象?
-
where I delete a RealmObject (and confirm its gone using StethoRealm), but when I create and save a new RealmObject with the same variable value, the deleted RealmObject reappears along with my new RealmObject.所有这些代码都应该包含在问题中! -
编辑:添加保存/删除方法
-
谢谢@Naz。
deleteMyObjectById和addMyObject在主线程上运行吗?