Проверьте, содержит ли предыдущий объект области новый столбец
Я проверил онлайн, но я не могу найти много, чтобы помочь мне. По сути, мы планируем выпустить "экстренную" версию нашего приложения из-за сбоев в Realm - мы забыли создать миграцию для нового свойства.
migration.enumerateObjects(ofType: Pet.className(), {oldObject, newObject in
newObject?[“nickname”] = nil
}
Поскольку это "экстренный" выпуск, некоторые пользователи уже имеют свойство "псевдоним", и, если код выше запускается, это поле будет изменено на ноль. Таким образом, мы хотели бы проверить, существует ли свойство nickname в oldObject, чтобы мы могли сохранить значение.
РЕДАКТИРОВАТЬ: я пытался oldObject?["nickname"] == nil
это работает для тех пользователей, у которых уже есть свойство nickname. Но я сталкиваюсь с NSException для пользователей, у которых еще нет свойства псевдонима.
Кто-нибудь знает, как это сделать? Спасибо!
1 ответ
Я думаю, что нашел ответ для себя:
migration.enumerateObjects(ofType: Pet.className(), {oldObject, newObject in
let hasNicknamePropery = oldObject?.objectSchema.properties.contains(where: { $0.name == "nickname" }) ?? false
if !hasNicknamePropery {
newObject?[“nickname”] = nil
}
}
Я просто проверяю схему oldObject и проверяю, существует ли свойство "псевдоним".