Je tente actuellement de supprimer un objet de domaine spécifique dans mon modèle à l'aide de la boucle,
mais chaque fois que j'exécute le Je n'ai essayé aucune autre option. p> Chaque fois que j'essaie d'exécuter l'application et exécutez ce code spécifique deletefromrealm (i) code> il arrête la boucle et je ne peux plus Supprimer l'autre objet. P>
CashCoundemodels.Deletefromrealm (I); code>, il arrête la boucle. P> P>
4 Réponses :
Vous ne savez pas quelle version du royaume que vous utilisez. Mais depuis 3.0.0, les collections de royaumes sont en direct et sont donc mises à jour immédiatement. Donc, CashCountSscOremodels.SIZE () Retournera un compte moins sur chaque suppression. Dans votre cas, je soupçonne que vous n'avez que 2 entrées dans la collection. Vous voudrez peut-être utiliser orderedrealmcollectionsNapshot code> à la place. Essayez le code suivant.
final Realm realms = Realm.getDefaultInstance();
realms.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmResults<CashCountScoreModel> cashCountScoreModels = CashCountScoreModel.getAll(realm);
OrderedRealmCollectionSnapshot snapshot = cashCountScoreModels.createSnapshot();
for (CashCountScoreModel cashCountScoreModel : snapshot) {
if (cashCountScoreModel != null && cashCountScoreModel.isCashOnHand) {
Log.d("CheckName : pos -- ", i +"~~" + cashCountScoreModel.isCashOnHand);
Log.d("CheckName : pos --", i + "~~" + cashCountScoreModel.employeeName);
cashCountScoreModel.deleteFromRealm();
}
}
}
});
Il fait que mon CashCoundemodel est un objet, mais ma CashCoundemodel est un modèle de classe.
Cela se produit parce que je pense que vous souhaitez supprimer plusieurs objets de royaume à partir d'un seul bloc d'exécution. Essayez le code ci-dessous dans le bloc Execute.
RealmResults<CashCountScoreModel> cashCountScoreModels=realm.where(CashCountScoreModel.class).equalTo(CashCountScoreModel.isCashOnHand,true).findAll(); cashCountScoreModels.deleteAllFromRealm();
Il a essayé celui-ci et renvoie: requête invalide: champ 'true' introuvable dans la classe 'CashCountemodel'. Mon code est: RealMResults
realm.executeTransaction(new Realm.Transaction() { @Override public void execute(Realm realm) { RealmResults<CashCountScoreModel> cashCountScoreModels=realm.where(CashCountScoreModel.class).equalTo(CashCountScoreModel.isCashOnHand,true).findAll(); cashCountScoreModels.deleteAllFromRealm(); } }); @Md. Nowshad Hasan is Correct. Just run in Realm Thread.
Vous ne devez pas appeler deletefromrealm (i) code> à l'intérieur d'une boucle car elle provoque toujours des crash. Utilisez ce code à la place:
realms.executeTransaction(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmResults<CashCountScoreModel> results = CashCountScoreModel.getAll(realm);
results.where().equalTo("isCashOnHand", true).findAll().deleteAllFromRealm();
}
});