从 Android Realm 中删除单个对象数据/行

10

我添加了一个单个用户的数据,就像这样:

Realm realm = Realm.getDefaultInstance();
newUser = new UserDatabase();

realm.executeTransaction(new Realm.Transaction() {

  public void execute(Realm realm) {
     newUser.setClassName(classSectionName);
     newUser.setClassNO(classNO);
     newUser.setImageUrl(imageUrl);
     newUser.setRollNo(rollNO);
     newUser.setSchool(school);              

  // and now saved the data in peresistant data like this:
  realm.copyToRealm(newUser);
  }
});

但是我无法找到从Realm数据库中删除单个条目的方法,即使我尝试了这样的方式,它也不起作用。

Realm realm = Realm.getDefaultInstance();
UserDatabase tempUser = new UserDatabase();
final RealmResults<UserDatabase> students = realm.where(UserDatabase.class).findAll();

  for(int i=0 ;  i<students.size();i++){
     final int index =i;
     if((students.get(i).getUserID()).equals(prefs.getString(QRActivity.USER_ID_AFTER_LOGIN,"jpt"))&&
     (students.get(i).getUserName()).equals(prefs.getString(QRActivity.USER_NAME_AFTER_LOGIN,"jpt"))){

        realm.executeTransaction(new Realm.Transaction() {

            public void execute(Realm realm) {

             //Trying to delete a row from realm.                                   

             students.deleteFromRealm(index);

             }
            });

    }
 }

有人有什么想法吗?

1个回答

21

使用 Realm Query 而不是运行循环,可以始终从 RealmResults<UserDatabase> 中找到与之匹配的 instance。 尝试一下。

final RealmResults<UserDatabase> students = realm
    .where(UserDatabase.class)
    .findAll();

UserDatabase userdatabase = students
    .where()
    .equalTo("userId",prefs.getString(QRActivity.USER_ID_AFTER_LOGIN,"jpt"))
    .equalTo("userName",prefs.getString(QRActivity.USER_NAME_AFTER_LOGIN,"jpt"))
    .findFirst();

if(userdatabase!=null) {

    if (!realm.isInTransaction()) {
        realm.beginTransaction();
    }

    userdatabase.deleteFromRealm();

    realm.commitTransaction();
}

注意:我只是假设“userId”和“userName”是你的列名,你可以写你自己的列名。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接