Realm Migration Error: 'RLMException': 'Property 'RecipeStep.recipeId' does not exist'
Realm Migration Error: 'RLMException': 'Property 'RecipeStep.recipeId' does not exist'
我 运行 在 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
}
}
我做错了什么?
事实证明这是旧版本 Realm (v5.4.5) 中的错误。我更新到版本 10.0.0 并解决了这个问题。迁移成功完成。我的代码没有任何更改。
我在 Xcode 12,为 iOS 13 建造。
在这个 .
上找到了关于一个听起来类似的错误的讨论
我 运行 在 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
}
}
我做错了什么?
事实证明这是旧版本 Realm (v5.4.5) 中的错误。我更新到版本 10.0.0 并解决了这个问题。迁移成功完成。我的代码没有任何更改。
我在 Xcode 12,为 iOS 13 建造。
在这个