Я проверял документацию по миграции, однако я не уверен, что я упустил из виду или это не указано, но я заметил, что документация только объясняет, как добавить столбец, что, если я хочу удалить столбец?
Удалить столбец в Realm
Ответы (3)
В разделе Миграции документации Realm Swift показано, как удалить два столбцы (firstName
и lastName
) и замените их одним новым свойством (например, fullName
).
Чтобы удалить столбцы из файла Realm, все, что вам нужно сделать, это удалить эти свойства из объекта вашей модели, а затем запустить миграцию.
Если в этих столбцах есть информация, которую вы хотите сохранить, вы можете переместить эту информацию в новое свойство внутри закрытия миграции (что и демонстрирует документация). Это совершенно необязательно, и если запустить миграцию с пустым замыканием, то столбцы просто удалятся, а данные удалены.
Ответ неверен, потому что такого рода базовые миграции и обновления схемы не происходят автоматически, т.е. если вы только удалите свойство и повторно запустите свое приложение, вы получите сбой.
Ответ: вы ДОЛЖНЫ увеличить значение schemaVersion
в Realm.Configuration
, чтобы вызвать базовые встроенные обновления схемы, описанные в остальных ответах и документации области.
На самом деле, ответ Лукаса правильный. У меня есть нулевой экземпляр Realm, когда я удалил один столбец и не изменил значение schemaVersion
.
Отладка этого фрагмента кода показала, что Realm возвращает ошибку, в которой говорится, что вы ДОЛЖНЫ изменить значение schemaVersion
, чтобы Realm обновил схему БД. В противном случае, как мы видим, Realm вернет вам не экземпляр объекта Realm, а nil.
Версия Realm 10.7.2.
// Realm will automatically detect new properties and removed properties and will update the schema on disk automatically
источник - person He Yifei 何一非   schedule 30.03.2017