Swift Realm - 不安全的可变访问器

时间:2016-11-08 22:52:35

标签: swift realm

领域的新手。我修改了一下,制作了一些模型,玩了一些测试数据,现在我更新了我的模型(添加了一些属性,删除了一些其他的,更改了一些现有的)并且想要完全删除我的领域文件,所以我可以从新的开始基于新模型的testdata。不知何故,我不能只删除该文件。

  1. 只需使用

    试试吧! realm.write {  realm.deleteAll() }

  2. realm.unsafeMutableAddressor

    let realm = try! Realm()内崩溃
    1. 尝试通过Realm Browser删除所有内容,我找不到任何删除整个架构的按钮?我只能删除某些对象..

    2. 尝试通过以下方式删除它:

      试试吧! FileManager.default.removeItem(at:realm.configuration.fileURL!)

    3. 在与1相同的错误消息中再次崩溃。

      为了“从头开始”,我到底需要做什么?这花费了我大约一个小时,用这3种不同的方式尝试。有什么想法吗?

      谢谢!

      编辑:我真的不知道发布什么代码给你任何材料猜测。我应该发布什么以获得有关该问题的更多有用信息?

1 个答案:

答案 0 :(得分:1)

如果您正在更改架构并且不想担心执行Realm迁移,仅仅删除Realm中的所有对象是不够的。您需要从磁盘中删除Realm文件并重新开始。

如果您要删除Realm文件,则需要在首次调用Realm()之前执行此操作,因为Realm随后会在该点之后将该实例的副本保留在内存中(这可以通过将实例创建放在@autoreleasepool块中来缓解。

出于调试目的,每次需要迁移时删除Realm的最简单方法是在Realm的deleteRealmIfMigrationNeeded对象中将true设置为Configuration

var configuration = Realm.Configuration()
configuration.deleteRealmIfMigrationNeeded = true
Realm.Configuration.defaultConfiguration = configuration

let realm = try! Realm()

如果要自己显式删除默认Realm文件,则需要通过直接引用默认配置中的文件URL来执行此操作。如果您创建了一个Realm()实例,然后从中提取fileURL属性,则已经太晚了。

var configuration = Realm.Configuration()
let defaultURL = configuration.fileURL

try! FileManager.default.removeItem(at: defaultURL)

let realm = try! Realm()

如果您需要对这些问题进行任何澄清,请与我们联系。感谢您尝试Realm! :)