I need to delete objects from a realm during a migration.
I have an AccountManager which contains :
func logOut() {
let realm = try! Realm()
try! realm.write {
realm.delete(realm.objects(Account.self))
realm.delete(realm.objects(Address.self))
... // Other deletions
}
}
But whenever I use the logOut() function in a migration block it just fails.
let config = Realm.Configuration(
schemaVersion: 11,
migrationBlock: { migration, oldSchemaVersion in
if (oldSchemaVersion < 11) {
// Delete objects from realm
AccountManager().logOut() // DOESN'T WORK
}
})
Realm.Configuration.defaultConfiguration = config
I absolutely need users to relog after this update - Is there any way I could perform these deletions in a migration block ?
You can use Migration.deleteData(forType typeName: String)
instead Realm.delete(_:)
as follows.
Realm.Configuration(schemaVersion: 11, migrationBlock: { migration, oldSchemaVersion in
if oldSchemaVersion < 11
migration.deleteData(forType: Account.className)
migration.deleteData(forType: Address.className)
...
You can tell Realm to delete when migration needed.
Realm.Configuration.defaultConfiguration = Realm.Configuration(
schemaVersion: 10,
migrationBlock: { migration, oldSchemaVersion in
},
deleteRealmIfMigrationNeeded: true
)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With