【问题标题】:Ream swift migration crash only on deviceReam 快速迁移崩溃仅在设备上
【发布时间】:2019-02-07 14:53:01
【问题描述】:

我必须通过在其中一个对象上添加一个字段来更新我的领域架构。

这里是迁移代码:

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {

    let config = Realm.Configuration(
        schemaVersion: 4,

        migrationBlock: { migration, oldSchemaVersion in
            if (oldSchemaVersion < 4) {
                print("Updating Realm schema...")
                // Nothing to do!
            }
    })
    Realm.Configuration.defaultConfiguration = config
    let realm = try! Realm()

    // ... rest of code
}
  • 在模拟器上运行就OK了
  • 从 xCode 在设备上运行时没问题

但如果我从 TestFairy 或 TestFlight 安装应用程序,应用程序会在启动时崩溃。当我删除迁移时,一切都很好,所以迁移会导致问题。

符号化崩溃报告没有帮助,崩溃发生在 didFinishLaunchingWithOptions 的开始。

尝试了各种导出选项更改(位码,...),但结果相同。

如果没有从 xCode 安装更新的应用程序,您是否看到迁移失败的任何原因?

【问题讨论】:

  • 尝试将 1 添加到 schemaVersion (5)
  • 当您在设备上运行时尝试增加版本。也许在已经超过 4 个的设备上。
  • 不幸的是,这不是原因。该应用程序已经在架构版本 0 的设备上。通过 xCode 更新它是可以的;从 TestFlight 崩溃更新它。发送到 TestFlight 或 TestFairy 的版本与使用 xCode 的版本相同。唯一的区别是我把它存档并上传了。
  • 用更高的方案号归档新的并尝试:)

标签: ios swift realm realm-migration


【解决方案1】:

每次您将应用程序分发到 Test FlightAppStore 时,

您应该在方案中添加一个,例如,如果您的应用程序是最近构建的
test flight 上的架构编号为 4,如果您对领域类有任何更改,则新版本应为 5,但是如果您在本地尝试测试,您可以删除应用程序并通过Xcode重新安装。

看看documentation

【讨论】:

  • 我之前的模式编号是0,我可以看到它,因为我将它打印在日志上。无论如何,我按照您的建议将新方案编号从 4 更改为 5,并且不再发生崩溃。恕我直言,这很奇怪,但问题已经解决了,非常感谢你坚持这个想法:)
  • 没问题,我一直在使用领域,这就是为什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多