gpt4 book ai didi

android - 从 realm.io android 中删除单个对象(如果它仍然存在)

转载 作者:搜寻专家 更新时间:2023-11-01 09:45:14 24 4
gpt4 key购买 nike

我使用 Realm 来存储稍后在 ListView 中显示的项目。这些项目有一个删除按钮,如果用户点击该按钮两次,应用程序就会崩溃,因为 realm 表示该对象不再有效,无法对其进行操作。有没有比 try catch 异常并忽略它更优雅的解决方案?

这里是onClick方法的代码:

@Override
public void onClick(View view) {
Toast.makeText(context, "Timer " + timer.getUUID() + " was stopped.", Toast.LENGTH_SHORT).show();
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
RealmResults<Timer> result = realm.where(Timer.class).equalTo("uuid", timer.getUUID()).findAll();
result.deleteAllFromRealm();
realm.commitTransaction();
}

最佳答案

我意识到,因为我已经有了对该对象的引用,所以我可以使用 realms isValid() 方法,请参阅我的代码:

@Override
public void onClick(View view) {
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
if (timer.isValid()) {
Toast.makeText(context, "Timer " + timer.getUUID() + " was stopped.", Toast.LENGTH_SHORT).show();
timer.deleteFromRealm();
}
realm.commitTransaction();
}

我还在 RealmObject 上找到了 deleteFromRealm() 方法,由于某些原因我之前找不到它..
因此,正确的解决方案应该是:

RealmObject o = someRealmObject;
realm.beginTransaction();
if (o.isValid()) o.deleteFromRealm();
realm.commitTransaction();

关于android - 从 realm.io android 中删除单个对象(如果它仍然存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38367441/

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