现在我收到错误Property types for 'value' property do not match. Old type 'float', new type 'double'
如何清除数据库或迁移成功?
答案 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()
}