Проверьте, содержит ли предыдущий объект области новый столбец

Я проверил онлайн, но я не могу найти много, чтобы помочь мне. По сути, мы планируем выпустить "экстренную" версию нашего приложения из-за сбоев в 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 и проверяю, существует ли свойство "псевдоним".

Другие вопросы по тегам