Удалить столбец в Realm

Я проверял документацию по миграции, однако я не уверен, что я упустил из виду или это не указано, но я заметил, что документация только объясняет, как добавить столбец, что, если я хочу удалить столбец?


person Happiehappie    schedule 16.12.2015    source источник
comment
// Realm will automatically detect new properties and removed properties and will update the schema on disk automatically источник   -  person He Yifei 何一非    schedule 30.03.2017


Ответы (3)


В разделе Миграции документации Realm Swift показано, как удалить два столбцы (firstName и lastName) и замените их одним новым свойством (например, fullName).

Чтобы удалить столбцы из файла Realm, все, что вам нужно сделать, это удалить эти свойства из объекта вашей модели, а затем запустить миграцию.

Если в этих столбцах есть информация, которую вы хотите сохранить, вы можете переместить эту информацию в новое свойство внутри закрытия миграции (что и демонстрирует документация). Это совершенно необязательно, и если запустить миграцию с пустым замыканием, то столбцы просто удалятся, а данные удалены.

person TiM    schedule 16.12.2015
comment
Не за что! Да, они могут быть довольно сложными; где это такая простая вещь, что ты даже не уверен, что это правильный путь. ;) Удачи! - person TiM; 16.12.2015
comment
Спасибо, у меня есть еще одна проблема с миграцией, связанная с переполнением стека. Просто ждите 90-минутного кулдауна, проверьте и его, если возможно. - person Happiehappie; 16.12.2015
comment
done stackoverflow.com/questions/34307111/ - person Happiehappie; 16.12.2015

Ответ неверен, потому что такого рода базовые миграции и обновления схемы не происходят автоматически, т.е. если вы только удалите свойство и повторно запустите свое приложение, вы получите сбой.

Ответ: вы ДОЛЖНЫ увеличить значение schemaVersion в Realm.Configuration, чтобы вызвать базовые встроенные обновления схемы, описанные в остальных ответах и ​​документации области.

person Lucas Chwe    schedule 21.02.2019
comment
Это должен быть принятый ответ! - person My Will; 21.07.2021

На самом деле, ответ Лукаса правильный. У меня есть нулевой экземпляр Realm, когда я удалил один столбец и не изменил значение schemaVersion.

Отладка этого фрагмента кода показала, что Realm возвращает ошибку, в которой говорится, что вы ДОЛЖНЫ изменить значение schemaVersion, чтобы Realm обновил схему БД. В противном случае, как мы видим, Realm вернет вам не экземпляр объекта Realm, а nil.

Версия Realm 10.7.2.

person Oleksandr Herasymchuk    schedule 14.04.2021