如何从iOS中完全删除Realm数据库?

时间:2016-05-23 16:42:26

标签: swift realm

现在我收到错误Property types for 'value' property do not match. Old type 'float', new type 'double'如何清除数据库或迁移成功?

7 个答案:

答案 0 :(得分:36)

要从磁盘中完全删除Realm文件并从头开始,只需使用NSFileManager手动删除它即可。

例如,要删除默认的Realm文件:

NSFileManager.defaultManager().removeItemAtURL(Realm.Configuration.defaultConfiguration.fileURL!)

如果要保留Realm文件,但完全清空对象,可以调用deleteAll()来执行此操作:

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

更新:我觉得我在原来的答案中忽略了这一点。如果您选择从磁盘中删除Realm文件,则必须在应用程序中的任何线程上打开它之前执行此操作。一旦打开,Realm将在内部缓存对它的引用,即使文件被删除也不会被释放。

如果您确实需要在删除之前打开Realm文件以检查其内容,可以将其括在autoreleasepool中以执行此操作。

答案 1 :(得分:1)

虽然其他评论是正确的,但您应该看看:https://realm.io/docs/swift/latest/#migrations

它为如何进行迁移提供了一个非常清晰的解释,它非常简单,如果可以帮助的话,最好删除所有内容。

答案 2 :(得分:1)

这是在swift 4.1中的方法:

FileManager.default.removeItem(at:Realm.Configuration.defaultConfiguration.fileURL!)  

答案 3 :(得分:1)

除了使用NSFileManager删除文件之外,还删除.lock文件和.management文件夹。否则,如果您尝试使用相同的名称重新创建领域文件,则会显示一条错误消息,指出找不到该文件。

答案 4 :(得分:1)

Swift 4.2:

func remove(realmURL: URL) {
        let realmURLs = [
            realmURL,
            realmURL.appendingPathExtension("lock"),
            realmURL.appendingPathExtension("note"),
            realmURL.appendingPathExtension("management"),
            ]
        for URL in realmURLs {
            try? FileManager.default.removeItem(at: URL)
        }
let url = Realm.Configuration.defaultConfiguration.fileURL!
remove(realmURL: url)

答案 5 :(得分:0)

你试过吗

   let realm = try! Realm()
   realm.deleteAllObjects() 

你也可以尝试通过将设备插入计算机,转到Xcode然后设备,然后在那里找到当前域并删除它来删除设备。

答案 6 :(得分:0)

迅捷4.2 要删除数据库:

func remove(realmURL: URL) {
        let realmURLs = [
            realmURL,
            realmURL.appendingPathExtension("lock"),
            realmURL.appendingPathExtension("note"),
            realmURL.appendingPathExtension("management"),
            ]
        for URL in realmURLs {
            try? FileManager.default.removeItem(at: URL)
        }
let url = Realm.Configuration.defaultConfiguration.fileURL!
remove(realmURL: url)

要清除数据库:

try? realm.write {
    realm.deleteAll()
}