我需要在迁移期间从领域中删除对象.
我有一个AccountManager,其中包含:
func logOut() {
let realm = try! Realm()
try! realm.write {
realm.delete(realm.objects(Account.self))
realm.delete(realm.objects(Address.self))
... // Other deletions
}
}
Run Code Online (Sandbox Code Playgroud)
但每当我在迁移块中使用logOut()函数时,它就会失败.
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
Run Code Online (Sandbox Code Playgroud)
我绝对需要用户在此更新后重新登录 - 有什么办法可以在迁移块中执行这些删除操作吗?
win*_*int 10
您可以告诉Realm在需要迁移时删除.
Realm.Configuration.defaultConfiguration = Realm.Configuration(
schemaVersion: 10,
migrationBlock: { migration, oldSchemaVersion in
},
deleteRealmIfMigrationNeeded: true
)
Run Code Online (Sandbox Code Playgroud)
您可以Migration.deleteData(forType typeName: String)改为使用Realm.delete(_:)如下.
Realm.Configuration(schemaVersion: 11, migrationBlock: { migration, oldSchemaVersion in
if oldSchemaVersion < 11
migration.deleteData(forType: Account.className)
migration.deleteData(forType: Address.className)
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4723 次 |
| 最近记录: |