我在网上查了一下,但我找不到多大帮助。基本上我们计划有一个"紧急情况"由于Realm中的崩溃而发布我们的应用程序 - 我们忘记为新属性创建迁移。
migration.enumerateObjects(ofType: Pet.className(), {oldObject, newObject in
newObject?[“nickname”] = nil
}
因为这是紧急情况"释放一些用户已经拥有"昵称"属性,如果上面的代码运行,此字段将更改为 nil 。因此,我们想检查"昵称"属性已存在于 oldObject 中,因此我们可以保留该值。
编辑:我尝试了oldObject?["nickname"] == nil
此功能可以找到那些已经拥有昵称属性的用户。但是对于那些还没有昵称属性的用户,我遇到 NSException 。
任何人都知道怎么做?谢谢!
答案 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”属性是否已存在。