首页 > 解决方案 > 如何删除除一种类型之外的所有对象?

问题描述

我知道我可以使用以下代码轻松完成:

realm.delete(realm.objects(Duck.self))
realm.delete(realm.objects(Frog.self))
//...
realm.delete(realm.objects(Cat.self))

但是删除除一种类型对象之外的所有对象的最佳方法是什么?

请注意,我有很多类型,每次添加新类型时,我都应该修改我的deleteAll方法。

标签: swiftrealm

解决方案


According to Dávid's answer:

func deleteAll(except types: Object.Type...) {
    guard let realm = realm else { return }

    try? realm.write {
        realm.configuration.objectTypes?.filter{ type in types.contains{ $0 == type } == false}.forEach{ objectType in
            realm.delete(realm.objects(objectType.self))
        }
    }
}

Usage:

deleteAll(except: Dog.self, Chicken.self)

推荐阅读