我可以选择进行迁移,但我更愿意删除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)
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
考虑到问题是关于删除整个存储而不是迁移它,我认为删除 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)
如果在加载存储时发生迁移错误,我会在应用程序的调试版本中使用此代码,然后我重新创建存储。在开发过程中,模式可能会发生很大变化,因此一直困扰着迁移会很麻烦。
| 归档时间: |
|
| 查看次数: |
42147 次 |
| 最近记录: |