web-dev-qa-db-ja.com

レルム内のすべてのオブジェクトを簡単に削除するにはどうすればよいですか

移行を行うこともできますが、defaultRealm()のすべてを削除することをお勧めします。どうすれば簡単にできますか?

realm.deleteObject(object)

.deleteObjectsと共に使用できる唯一の関数です。

私は次のコードを試しました:

方法1

realm.deleteObjects(RLMObject.objectsInRealm(realm, withPredicate: NSPredicate(value: true)))

方法2

        realm.deleteObjects(Dog.allObjectsInRealm(realm))
        realm.deleteObjects(Person.allObjectsInRealm(realm))
        realm.deleteObjects(Goal.allObjectsInRealm(realm))
        realm.deleteObjects(Goals.allObjectsInRealm(realm))

どちらも移行例外を防ぐことができません。

29
CaptainCOOLGUY

deleteAll() を使用します。

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

v0.87. の時点で、 deleteAllObjects には RLRealm のメソッドがあり、すべてのオブジェクト。

15
Michael McGuire

レルムの世界では物事が進んでいます-誰かがこれに出くわした場合に備えて、設定できるプロパティがあります:

Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true

その後、広告どおりに実行します。 (ところで:上記の構文の多くは、他の方法を試している場合に備えて変更されています)

Github PR https://github.com/realm/realm-cocoa/pull/346

11
David Glance

レルムDBファイルを削除することは、ストレージを移行するのではなく、ストレージ全体を削除することに関する質問であったため、有効な答えだと思います。

簡単なSwift=のコード(Swift 2.1およびRealm 0.96.2の時点):

if let path = Realm.Configuration.defaultConfiguration.path {
    try! NSFileManager().removeItemAtPath(path)
}

ストレージのロード時に移行エラーが発生した場合、アプリのDEBUGバージョンでこのコードを使用してから、ストレージを再作成します。開発中にスキーマが大きく変更される可能性があるため、常に移行に煩わされるのは面倒です。

4
zubko