在android中删除Realm中的单个对象数据/行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在android中删除Realm中的单个对象数据/行相关的知识,希望对你有一定的参考价值。

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

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);

             }
            });

    }
 }

有谁有想法吗 ?

答案

你总是可以使用instanceRealmResults<UserDatabase>找到匹配的Realm Query,而不是运行循环。试试这个。

    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”,您可以改为编写列名。

以上是关于在android中删除Realm中的单个对象数据/行的主要内容,如果未能解决你的问题,请参考以下文章

从 Realm 数据库中检索单个对象的正确方法

如何从 SwiftUI 和 Realm 中另一个列表中的对象中添加和删除列表中的对象

在循环中使用Realm或在Android中插入列表

Realm保留一个已删除的对象

Realm在React Native和Node.JS中找到像MongoDB findOne这样的单个对象

如何在 Android 中清除 Realm 中的数据库