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

时间:2018-01-12 04:35:47

标签: realm swift4 realm-migration

我在网上查了一下,但我找不到多大帮助。基本上我们计划有一个"紧急情况"由于Realm中的崩溃而发布我们的应用程序 - 我们忘记为新属性创建迁移。

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

因为这是紧急情况"释放一些用户已经拥有"昵称"属性,如果上面的代码运行,此字段将更改为 nil 。因此,我们想检查"昵称"属性已存在于 oldObject 中,因此我们可以保留该值。

编辑:我尝试了oldObject?["nickname"] == nil此功能可以找到那些已经拥有昵称属性的用户。但是对于那些还没有昵称属性的用户,我遇到 NSException

任何人都知道怎么做?谢谢!

1 个答案:

答案 0 :(得分:0)

我想我找到了自己的答案:

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

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