如何轻松删除领域中的所有对象

Cap*_*GUY 31 realm ios swift

我可以选择进行迁移,但我更愿意删除defaultRealm()中的所有内容.我怎么能这么容易做到?

realm.deleteObject(object)
Run Code Online (Sandbox Code Playgroud)

是唯一与.deleteObjects一起使用的函数.

我试过以下代码:

方法1

realm.deleteObjects(RLMObject.objectsInRealm(realm, withPredicate: NSPredicate(value: true)))
Run Code Online (Sandbox Code Playgroud)

方法2

        realm.deleteObjects(Dog.allObjectsInRealm(realm))
        realm.deleteObjects(Person.allObjectsInRealm(realm))
        realm.deleteObjects(Goal.allObjectsInRealm(realm))
        realm.deleteObjects(Goals.allObjectsInRealm(realm))
Run Code Online (Sandbox Code Playgroud)

两者都无法阻止迁移异常.

jps*_*sim 86

用途deleteAll():

let realm = try! Realm()
try! realm.write {
    realm.deleteAll()
}
Run Code Online (Sandbox Code Playgroud)

  • 我认为API改变了一点.我可以使用`RealmSwift`删除所有对象.这个工作:`试试!realm.write {realm.deleteAll()}` (4认同)

Mic*_*ire 15

从v0.87.0开始,有一种deleteAllObjects方法RLRealm可以清除所有对象的领域.


Dav*_*nce 11

在Realm世界中已经发生了变化 - 如果现在有人遇到这个问题,可以设置一个属性:

Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true
Run Code Online (Sandbox Code Playgroud)

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

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


zub*_*bko 5

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

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

if let path = Realm.Configuration.defaultConfiguration.path {
    try! NSFileManager().removeItemAtPath(path)
}
Run Code Online (Sandbox Code Playgroud)

如果在加载存储时发生迁移错误,我会在应用程序的调试版本中使用此代码,然后我重新创建存储。在开发过程中,模式可能会发生很大变化,因此一直困扰着迁移会很麻烦。