【问题标题】:Check if previous Realm Object contains new column检查以前的领域对象是否包含新列
【发布时间】:2018-01-12 04:35:47
【问题描述】:

我在网上查了一下,但找不到太多可以帮助我的东西。基本上,由于 Realm 崩溃,我们计划“紧急”发布我们的应用程序 - 我们忘记为新属性创建迁移。

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

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

编辑:我尝试了oldObject?["nickname"] == nil,这适用于那些已经拥有 nickname 属性的用户。但是对于还没有 nickname 属性的用户,我遇到了 NSException

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

【问题讨论】:

    标签: realm swift4 realm-migration


    【解决方案1】:

    我想我自己找到了答案:

    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 的架构并检查“昵称”属性是否已经存在。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 2012-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-07
      • 2019-07-04
      相关资源
      最近更新 更多