web-dev-qa-db-ja.com

実行時にすべてのレルムオブジェクトを削除する

iOSでは、realm.deleteAllObjects();を簡単に呼び出して、Realmデータベース内のすべてのオブジェクトを削除できます。

Androidで同じようにするにはどうすればよいですか?

13
JayVDiyk

結果を使用してこれを行うことができます。たとえば、すべての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();

参照: ドキュメント

17
Shripada

レルムデータベースからすべてのオブジェクトを削除:

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

ある種類のすべてのオブジェクトをレルムデータベースから削除します:

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();
    }
});
22
David Miguel

現時点では、clear()は非推奨です。代わりに、 documentation を参照してください。results.deleteAllFromRealm()またはrealm.deleteAll()またはrealm.delete(Dog.class)を使用してください。

8
iamtodor

私はすべてのオブジェクトを削除するためにこれを使用しています:

    private void clearAllRealmPerson(){

        Realm realm = Realm.getDefaultInstance();

        realm.beginTransaction();
        realm.clear(Person.class);
        realm.commitTransaction();
        realm.close();
   }
3
Awesome Code
           try {
       val realm = Realm.getDefaultInstance()
        realm.beginTransaction()
        realm.delete<Dog>()
        realm.insertOrUpdate(dogs)
        realm.commitTransaction()
        realm.close()
    } catch (e: Exception) {
        e.message
    }
0
Fidan Bacaj

Realm APIが変更されたようです。 the docs によると、これが現在の方法です

let all = realm.objects(Books.self)
realm.delete(all)

まだラップしていない場合は、トランザクションでラップすることを忘れないでください。

    try! realm.write {
            let all = realm.objects(Rogets.self)
            realm.delete(all)
        }
0
Morten J