我可以选择进行迁移,但我更愿意删除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))
两者都无法阻止迁移异常。
答案 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
然后按照广告宣传。 (顺便说一句:如果你正在尝试任何其他方法,上面的很多语法已经改变了)
答案 3 :(得分:4)
我认为删除Realm DB文件是有效的答案,因为问题是关于删除整个存储而不是迁移它。
这是一个快速的Swift代码(从Swift 2.1和Realm 0.96.2开始):
if let path = Realm.Configuration.defaultConfiguration.path {
try! NSFileManager().removeItemAtPath(path)
}
如果在加载存储时发生迁移错误,我会在应用程序的DEBUG版本中使用此代码,然后重新创建存储。在开发过程中,模式可能会发生很大变化,因此一直无需担心迁移过于繁琐。