【问题标题】:Conditionally delete schema instead of migrating有条件地删除架构而不是迁移
【发布时间】:2020-08-11 14:49:35
【问题描述】:

Realm 有两种处理架构更改的方法:

  1. 运行迁移块,或
  2. 删除架构

在我们的案例中不需要选项 2,因为我们有很多数据,我们的架构版本与内部版本号相关,而且我们经常发布。

所以我们使用选项 1。但在某些情况下,如果旧模式版本太旧,运行选项 2 而不是迁移会很方便。这可能吗?

用例 1:我想重命名一个 Object 类,但我不想冒险搞砸迁移(这很容易做到)。对于从重命名之前的版本迁移的用户,我可以删除架构,但我不想继续删除架构以进行后续迁移。

用例 2:我自 2016 年以来一直在编写迁移(!),但我只关心为定期更新的用户运行迁移(而不是删除架构)。所以我想维持长达几个月的迁移,并为之前升级的任何人删除架构。

如果我可以弄清楚如何在在应用配置之前访问我的领域的旧架构版本,我可能会想出一个解决方法,但它似乎是 Realm 让我看到架构的唯一空间版本在迁移块中,当您已经在运行迁移时,似乎无法决定删除架构。

【问题讨论】:

    标签: ios swift realm


    【解决方案1】:

    这并不能完全回答问题,但可能会导致更完整的解决方案。

    如果您需要检索领域文件的架构版本,请按以下步骤操作(对于默认配置)

    let x = try! schemaVersionAtURL(Realm.Configuration.defaultConfiguration.fileURL!)
    

    以及在Functions: schemaVersionAtURL(_:encryptionKey:) 下的 API 中记录的内容

    【讨论】:

    • 这完美地回答了我的问题的最后一部分——如何在应用配置之前访问我的领域的旧架构版本。谢谢!
    猜你喜欢
    • 2012-03-16
    • 2014-08-23
    • 1970-01-01
    • 2012-07-23
    • 1970-01-01
    • 2013-09-24
    • 2023-03-12
    • 1970-01-01
    • 2015-01-12
    相关资源
    最近更新 更多