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

时间:2014-10-03 19:41:38

标签: ios swift realm

我可以选择进行迁移,但我更愿意删除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))

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

4 个答案:

答案 0 :(得分:81)

使用deleteAll()

let realm = try! Realm()
try! realm.write {
    realm.deleteAll()
}

答案 1 :(得分:15)

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

答案 2 :(得分:10)

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

Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true

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

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

答案 3 :(得分:4)

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

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

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

如果在加载存储时发生迁移错误,我会在应用程序的DEBUG版本中使用此代码,然后重新创建存储。在开发过程中,模式可能会发生很大变化,因此一直无需担心迁移过于繁琐。