web-dev-qa-db-ja.com

iOSからRealmデータベースを完全に削除する方法は?

今、エラーProperty types for 'value' property do not match. Old type 'float', new type 'double'データベースをクリアする方法または移行する方法は正常ですか?

12

Realmファイルをディスクから完全に削除し、最初から始めるには、NSFileManagerを使用して手動で削除するだけです。

たとえば、デフォルトのレルムファイルを削除するには:

_NSFileManager.defaultManager().removeItemAtURL(Realm.Configuration.defaultConfiguration.fileURL!)
_

Realmファイルを保持したいが、オブジェクトを完全に空にしたい場合は、deleteAll()を呼び出して実行できます。

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

pdate:元の回答でこれを言及するのを怠っていたような気がします。ディスクからRealmファイルを削除する場合は、アプリ内のスレッドでファイルを開く前に削除する必要があります。それが開かれると、Realmは内部的にその参照をキャッシュします。ファイルが削除されても解放されません。

削除する前にRealmファイルを開いてその内容を確認する必要がある場合は、autoreleasepoolでファイルを囲んでこれを行うことができます。

38
TiM

これはSwift 4.1で行う方法です:

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

NSFileManagerを使用してファイルを削除するだけでなく、.lockファイルと.managementフォルダーも削除します。そうでない場合、同じ名前のレルムファイルを再作成しようとすると、ファイルが見つからないことを示すエラーが発生します。

1
HG's

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)
1

他のコメントは正しいですが、実際に確認する必要があります。 https://realm.io/docs/Swift/latest/#migrations

移行の方法について非常に明確な説明があり、それは本当に簡単であり、それが役立つ場合はすべてを削除する方がはるかに優れています。

1
Alex Trott

やってみました

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

また、デバイスにコンピューターに接続し、Xcodeからデバイスに移動して、そこから現在のレルムを見つけて削除することで、デバイスからレルムを削除することもできます。

0
Amloelxer

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)

データベースをクリアするには:

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