问题描述
在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上找到了一个类似的发音错误的讨论。