首页 > 解决方案 > 如何在 iOS 应用程序中以编程方式将只读领域文件升级到最新版本

问题描述

我最近在我的 iOS 应用程序中将 Realm 更新为10.1.2. 但后来我遇到了一个崩溃,上面写着:

致命错误:“试试!” 表达式意外引发错误:...“必须允许升级 Realm 文件格式才能继续。” ...在RO模式下打开之前需要升级Realm文件路径:...

remote.realm文件是用户存储在远程服务器上的数据,这些数据被下载到 iOS 应用程序并用于各种用途。但是,3.x当我的 iOS 应用程序现在使用10.x.

我知道在 Realm Studio 中打开 Realm 可以执行升级,但是如何从我的 Cocoa 应用程序中升级/打开只读 Realm 文件并将其转换为新版本?

标签: realm

解决方案


如果您正在下载文件并且没有在某处重新上传或在进程之间共享它,您可能会捕获错误,在没有只读标志的情况下打开它以执行升级,然后以只读方式重新打开它并返回给调用者。我对 swift API 不是很熟悉,但在伪代码中,它看起来像:

func openRealm(config: Realm.Configuration) -> Realm {
    do {
         return try Realm(config)
    }
    catch migrationException {
        config.readOnly = false
        try! Realm(config)
        config.readOnly = true
        return try! Realm(config)
    }
}

推荐阅读