我如何轻松删除Realm中的所有对象
我有做迁移的select,但我宁愿删除我的defaultRealm()中的一切。 我怎样才能轻松做到这一点?
realm.deleteObject(object)
是与.deleteObjects一起的唯一函数。
我已经尝试了下面的代码:
方法1
realm.deleteObjects(RLMObject.objectsInRealm(realm, withPredicate: NSPredicate(value: true)))
方法2
realm.deleteObjects(Dog.allObjectsInRealm(realm)) realm.deleteObjects(Person.allObjectsInRealm(realm)) realm.deleteObjects(Goal.allObjectsInRealm(realm)) realm.deleteObjects(Goals.allObjectsInRealm(realm))
两者都无法阻止迁移exception。
使用deleteAll()
:
let realm = try! Realm() try! realm.write { realm.deleteAll() }
从v0.87.0开始 , RLRealm上有一个deleteAllObjects
方法,它将清除所有对象的Realm。
在这个世界里,事情已经发生了 – 如果现在有人遇到这个问题,那么就有一个属性可以设置:
Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true
然后它做广告。 (顺便说一句:很多上面的语法已经改变,如果你正在尝试任何其他方法)
我认为删除Realm DB文件是有效的答案,因为问题是关于删除整个存储而不是迁移它。
这是一个快速的Swift代码(从Swift 2.1和Realm 0.96.2开始):
if let path = Realm.Configuration.defaultConfiguration.path { try! NSFileManager().removeItemAtPath(path) }
如果在加载存储时发生迁移错误,然后重新创build存储,则在应用程序的DEBUG版本中使用此代码。 在开发过程中,模式可能会发生很大的变化,所以如果一直困扰着迁移,那将会非常麻烦。