2017-12-05 23 views
1

results.remove(0)はレルムでは推奨されていませんが、アンドロイドアプリケーションで領域要素を削除する最も良い方法は何ですか?レルム - results.remove()は領域内で非推奨になりました

私は特定の要素を削除しようとしましたし、私は次のコードを使用している:それはすべての要素を削除しますが、特定の位置を削除する必要がありますresult.deleteAllFromRealm();を使用して

を。

RealmResults<PersonDetailsModel> results = myRealm.where(PersonDetailsModel.class).equalTo("id", personId).findAll(); 
     myRealm.beginTransaction(); 
     results.remove(0);  // App crash 
     myRealm.commitTransaction(); 

しかし、それはそのライン上でのアプリのクラッシュだと、私はこのエラーを取得しています:

java.lang.UnsupportedOperationException: This method is not supported by 'RealmResults' or 'OrderedRealmCollectionSnapshot'. 

は、この問題を解決するためにいくつかの方法を提案します。

+0

はすでにここに答えた:https://stackoverflow.com/questions/36736178/how-to-delete-object-from-realm-database-android – jorjSB

答えて

1

使用deleteFromRealm方法

result.deleteFromRealm(index); 
+0

おかげで、それはだ@sasikumar私のために働いた。 –

0

これを試してみてください:

realm.executeTransaction(new Realm.Transaction() { 
     @Override 
     public void execute(Realm realm) { 
      RealmResults<PersonDetailsModel> result = realm.where(PersonDetailsModel.class).equalTo("id", personId).findAll(); 
      result.deleteAllFromRealm(); 
     } 
    }); 

あなたの問題を解決していないならば、あなたは線の下に試すことができます:あなたはこのコードを使用することができます

result.deleteFromRealm(pos); 
0
realm.executeTransaction((r) -> { 
    r.where(PersonDetailsModel.class).equalTo("id", personId).findAll().deleteAllFromRealm(); 
}); 

それとも

realm.executeTransaction((r) -> { 
    PersonDetailsModel person = r.where(PersonDetailsModel.class).equalTo("id", personId).findFirst(); 
    if(person != null) { 
     person.deleteFromRealm(); 
    } 
});