2015-12-18 4 views

ответ

13

Вы можете сделать это, используя конкретные результаты, например, если я хочу, чтобы удалить все объекты Dog, я могу быть включено следующее:

// obtain the results of a query 

RealmResults<Dog> results = realm.where(Dog.class).findAll(); 

// All changes to data must happen in a transaction 
realm.beginTransaction(); 

// Delete all matches 
results.deleteAll(); 

realm.commitTransaction(); 

Ref: documentation

+0

Этот ответ является устаревшим. См. Ответ «Тодор» для рабочего решения. –

+0

Вместо этого вы должны использовать results.deleteAllFromRealm(), так как results.clear() устарел. plz обновите свой ответ –

+0

в области 3.5.0 realm.clear() устарел, вы можете использовать delete –

8

Сейчас clear() осуждается. Вместо этого, ссылаясь на documentation, вы должны использовать results.deleteAllFromRealm() или realm.deleteAll() или realm.delete(Dog.class).

16

Удалить все объекты из базы данных Realm:

realm.executeTransaction(new Realm.Transaction() { 
    @Override 
    public void execute(Realm realm) { 
     realm.deleteAll(); 
    } 
}); 

Удалить все объекты типа из базы данных Realm:

realm.executeTransaction(new Realm.Transaction() { 
    @Override 
    public void execute(Realm realm) { 
     realm.delete(Dog.class); 
    } 
}); 

Удалить результаты запроса:

final RealmResults<Dog> results = realm.where(Dog.class).findAll(); 

realm.executeTransaction(new Realm.Transaction() { 
    @Override 
    public void execute(Realm realm) { 
     // remove single match 
     results.deleteFirstFromRealm(); 
     results.deleteLastFromRealm(); 

     // remove a single object 
     Dog dog = results.get(5); 
     dog.deleteFromRealm(); 

     // Delete all matches 
     results.deleteAllFromRealm(); 
    } 
}); 
+0

Отличные примеры. Спасибо, что поделился! –

2

Я использую это для всех удаляемых объектов:

private void clearAllRealmPerson(){ 

     Realm realm = Realm.getDefaultInstance(); 

     realm.beginTransaction(); 
     realm.clear(Person.class); 
     realm.commitTransaction(); 
     realm.close(); 
    } 
+0

.clear() устарел. – MikeOscarEcho

0

UPDATE 3.7.0

realm.beginTransaction(); 
realm.deleteAll(); 
//else realm.delete(obj_A.class); 
realm.commitTransaction(); 
+0

Можете ли вы подробнее рассказать о своем ответе? Я не могу найти, что изменилось в 3.7.0 по этой теме. Спасибо. –

+0

в предыдущей версии Realm, был метод 'clear (A.class);', который устарел в более новой версии. @DavidMiguel – Aks4125

+0

'clear' был [устарел в версии 0.89.0] (https://github.com/realm/realm-java/blob/master/CHANGELOG.md#deprecated-7) не в 3.7.0. –

Смежные вопросы