【发布时间】:2015-12-18 03:59:10
【问题描述】:
在 iOS 上,我们可以轻松地调用 realm.deleteAllObjects(); 来删除 Realm 数据库中的所有对象。
我们如何在 Android 中实现相同的目标?
【问题讨论】:
在 iOS 上,我们可以轻松地调用 realm.deleteAllObjects(); 来删除 Realm 数据库中的所有对象。
我们如何在 Android 中实现相同的目标?
【问题讨论】:
从 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();
}
});
【讨论】:
您可以通过使用结果来做到这一点-例如,如果我想删除所有 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();
【讨论】:
现在clear() 已被弃用。相反,引用 documentation 您应该使用 results.deleteAllFromRealm() 或 realm.deleteAll() 或 realm.delete(Dog.class)。
【讨论】:
我用它来删除所有对象:
private void clearAllRealmPerson(){
Realm realm = Realm.getDefaultInstance();
realm.beginTransaction();
realm.clear(Person.class);
realm.commitTransaction();
realm.close();
}
【讨论】:
try {
val realm = Realm.getDefaultInstance()
realm.beginTransaction()
realm.delete<Dog>()
realm.insertOrUpdate(dogs)
realm.commitTransaction()
realm.close()
} catch (e: Exception) {
e.message
}
【讨论】:
更新 3.7.0
realm.beginTransaction();
realm.deleteAll();
//else realm.delete(obj_A.class);
realm.commitTransaction();
【讨论】:
clear(A.class); 方法在新版本中已被弃用。 @大卫米格尔
clear 是 deprecated in version 0.89.0 不在 3.7.0 中。
看起来 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)
}
【讨论】: