我如何轻松删除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 

然后它做广告。 (顺便说一句:很多上面的语法已经改变,如果你正在尝试任何其他方法)

Github PR https://github.com/realm/realm-cocoa/pull/3463

我认为删除Realm DB文件是有效的答案,因为问题是关于删除整个存储而不是迁移它。

这是一个快速的Swift代码(从Swift 2.1和Realm 0.96.2开始):

 if let path = Realm.Configuration.defaultConfiguration.path { try! NSFileManager().removeItemAtPath(path) } 

如果在加载存储时发生迁移错误,然后重新创build存储,则在应用程序的DEBUG版本中使用此代码。 在开发过程中,模式可能会发生很大的变化,所以如果一直困扰着迁移,那将会非常麻烦。