领域迁移错误:“ 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
}

如您所见,唯一的更改是配方ID的类型:将RealmOptional转换为Int。这是我正在使用的迁移块:

migration.enumerateObjects(ofType: Recipestep.className()) { oldobject,newObject in
               if let recipestepRecipeId = oldobject?["recipeId"] as? Int {
                  newObject?["recipeId"] = recipestepRecipeId
               }
            }

我在做什么错了?

解决方法

事实证明这是旧版Realm(v5.4.5)中的错误。我更新到版本10.0.0,此问题已解决。迁移成功完成。我没有更改代码。

我使用的是Xcode 12,适用于iOS 13。

在此SO thread上找到了一个类似的发音错误的讨论。