В моем классе RealmObject есть поле дня рождения, которое является типом Int?. Мне нужно изменить тип этого поля на Long?. Не знаю, понадобится ли мне миграция.
Из документов области:
The integer types byte, short, int, and long are all mapped to long within Realm.
Я попытался установить версию приложения безdeleteRealmIfMigrationNeeded (это означает, что Realm попытается выполнить миграцию, если это необходимо) на эмуляторе, а затем изменил поле с Int? на Long?. Никаких сбоев или исключений. Кроме того, когда я вытащил свой файл области из эмулятора, тип поля остался прежним и все еще был Int?.
open class Profile : RealmObject() {
@PrimaryKey
var id = ""
var email = ""
var firstName = ""
var lastName = ""
var dateJoined = 0
var gender: String? = null
var birthday: Int? = null // I want to change this to Long?
}
Я ожидаю, что в этом сценарии мне не потребуются миграции. Но я не хочу выкладывать обновление, не получив реального ответа.
Да, профиль был настроен с помощью предыдущей версии приложения (версия с Int?), а затем я изменил его на Long?, и никаких сбоев. Да, deleteRealmIfMigrationNeeded не будет выполнять миграцию, но у меня уже есть код миграции, поэтому моя теория заключается в том, что, если Realm нужно было запустить миграцию, он бы это сделал вместо удаления файла.
Подтверждено, что в этом случае миграция не требуется. Нужна ли миграция, чтобы изменить тип Int на Long?
Вы настроили свой профиль, включая поле
birthday, затем изменили его наLong?и попытались открыть приложение? Если он показывает правильную дату и вы можете просматривать / редактировать его без сбоев, то все должно быть в порядке. Между прочим, этот флаг, похоже, подразумевает, что объект будет Удалить, если требуется миграция, а не то, что он сам перенесет его.