检查以前的领域对象是否包含新列

Check if previous Realm Object contains new column

我上网查了一下,但找不到太多帮助。基本上,由于 Realm 中的崩溃,我们计划 "emergency" 发布我们的应用程序 - 我们忘记为新的 属性.

创建迁移
migration.enumerateObjects(ofType: Pet.className(), {oldObject, newObject in
    newObject?[“nickname”] = nil
}

由于这是一个 "emergency" 版本,一些用户已经拥有 "nickname" 属性,如果上面的代码运行此字段将更改为 。因此,我们想检查 "nickname" 属性 是否已经存在于 oldObject 中,以便我们可以保留该值。

编辑: 我试过 oldObject?["nickname"] == nil 这对那些已经拥有 昵称 属性 的用户有效.但是我遇到 NSException 对于还没有 nickname 属性.

的用户

有人知道怎么做吗?谢谢!

我想我自己找到了答案:

migration.enumerateObjects(ofType: Pet.className(), {oldObject, newObject in
    let hasNicknamePropery = oldObject?.objectSchema.properties.contains(where: { [=10=].name == "nickname" }) ?? false
    if !hasNicknamePropery {
        newObject?[“nickname”] = nil
    }
}

我只是检查 oldObject 的架构并检查 "nickname" 属性 是否已经存在。