Я пытаюсь выполнить миграцию Realm с помощью следующего кода:
let version = try! schemaVersionAtURL(Realm.Configuration.defaultConfiguration.fileURL!)
let config = Realm.Configuration(
schemaVersion: version + 1,
migrationBlock: { migration, oldSchemaVersion in
if oldSchemaVersion < 1 {
migration.enumerateObjects(ofType: MyObject.className()) { oldObject, newObject in
// Here I transfer existing data to new properties
}
}
})
Realm.Configuration.defaultConfiguration = config
let _ = try! Realm()
Кажется, что миграция работает нормально, но при следующем перезапуске приложения текущая и старая версия схемы будут равны 0, несмотря на то, что они были установлены на 1 в результате миграции, которая произошла во время первого запуска.
Но миграция выполнена, поэтому условие if
истинно, и приложение вылетает из-за исключения Realm, вызванного повторной попыткой выполнить миграцию.
Может ли кто-нибудь помочь мне понять, что мне не хватает? Если конфигурация устанавливает версию схемы равной 1 во время миграции, почему она будет равна 0 при следующем перезапуске приложения?