在运行时删除所有领域对象

时间:2015-12-18 03:59:10

标签: java realm

在iOS上,我们可以轻松调用realm.deleteAllObjects();来删除Realm数据库中的所有对象。

我们如何在Android中实现相同目标?

7 个答案:

答案 0 :(得分:21)

删除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();
    }
});

答案 1 :(得分:16)

您可以使用结果执行此操作 - 例如,如果我想删除所有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();

参考:documentation

答案 2 :(得分:8)

现在{@ 1}}已弃用。相反,请参考documentation,您应该使用clear()results.deleteAllFromRealm()realm.deleteAll()

答案 3 :(得分:3)

我用它来删除所有对象:

    private void clearAllRealmPerson(){

        Realm realm = Realm.getDefaultInstance();

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

答案 4 :(得分:0)

           try {
       val realm = Realm.getDefaultInstance()
        realm.beginTransaction()
        realm.delete<Dog>()
        realm.insertOrUpdate(dogs)
        realm.commitTransaction()
        realm.close()
    } catch (e: Exception) {
        e.message
    }

答案 5 :(得分:0)

看起来Realm API已更改。根据{{​​3}},这就是现在的方式

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

如果还没有,请不要忘记将其包装在事务中。

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

答案 6 :(得分:-1)

更新3.7.0

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