37

移行を行うこともできますが、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))

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

4

4 に答える 4

106

使用deleteAll():

let realm = try! Realm()
try! realm.write {
    realm.deleteAll()
}
于 2014-10-07T20:37:12.803 に答える
15

v0.87.0の時点で、すべてのオブジェクトの Realm をクリアするdeleteAllObjectsメソッドがあります。RLRealm

于 2014-10-23T16:17:52.440 に答える
11

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

Realm.Configuration.defaultConfiguration.deleteRealmIfMigrationNeeded = true

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

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

于 2016-06-03T12:27:43.817 に答える
5

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

そのための簡単な Swift コードを次に示します (Swift 2.1 および Realm 0.96.2 の時点):

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

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

于 2015-11-08T13:08:04.050 に答える