Ошибка миграции области: 'RLMException': 'Свойство' RecipeStep.recipeId 'не существует'

У меня возникают проблемы во время миграции Realm. В сообщениях об ошибках говорится, что свойство не существует, но мой новый объект выглядит так:

class RecipeStep: Object {
   @objc dynamic var recipeId: Int = 0
   let stepNumber = RealmOptional<Int>()
   @objc dynamic var stepText: String? = nil
}

А вот как выглядит старая схема объекта:

class RecipeStep: Object {
   let recipeId = RealmOptional<Int>()
   let stepNumber = RealmOptional<Int>()
   @objc dynamic var stepText: String? = nil
}

Как видите, единственное изменение - это тип recipeId: преобразование RealmOptional в Int. А вот блок миграции, который я использую для этого:

migration.enumerateObjects(ofType: RecipeStep.className()) { oldObject, newObject in
               if let recipeStepRecipeId = oldObject?["recipeId"] as? Int {
                  newObject?["recipeId"] = recipeStepRecipeId
               }
            }

Что я делаю неправильно?


person theogood    schedule 22.10.2020    source источник


Ответы (1)


Это оказалось ошибкой в ​​более старой версии Realm (v5.4.5). Я обновился до версии 10.0.0, и эта проблема была решена. Перенос успешно завершен. Я ничего не изменил в своем коде.

Я использую Xcode 12, занимаюсь сборкой для iOS 13.

Обнаружено обсуждение похожей звучащей ошибки в этой ветке SO.

person theogood    schedule 22.10.2020