如何删除除一种类型以外的所有对象?

时间:2018-11-02 09:12:36

标签: swift realm

我知道我可以使用以下代码轻松做到这一点:

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

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

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

1 个答案:

答案 0 :(得分:2)

根据达维德的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))
        }
    }
}

用法:

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