捆绑更新的 Realm 种子文件?

问题描述 投票:0回答:1

我已成功创建了一个 Seed.realm 文件,并使用以下代码片段将其与我的应用程序捆绑在一起:

init() {
    guard let url = Bundle.main.url(forResource: "seed", withExtension: "realm") else { fatalError("Could not find seed") }
    realm = try! Realm(configuration: Realm.Configuration(schemaVersion: 1, seedFilePath: url))
}

当我发布更新的应用程序版本时,如何从新更新的种子文件中获取领域种子?经过一些测试后,只要在 Document 文件夹中获得了 default.realm,Realm 似乎就会很高兴,并且一旦创建了 default.realm,它就会忽略种子文件。

default.realm 是应用程序第一次运行时从种子文件创建的。我可以以某种方式使用新的内部版本号或其他内容创建种子文件,以便上述代码在检测到新内部版本时自动重新创建 default.realm 文件吗?

我正在考虑在应用程序第一次启动时创建一个包含内部版本号的 UserDefault-key。然后将此密钥与当前的应用程序构建进行比较,如果不同,则在调用之前删除default.realm-文件:

realm = try! Realm(configuration: Realm.Configuration(schemaVersion: 1, seedFilePath: url))

这是正确的做法吗?我已经搜索了 Realm 文档,但找不到任何处理此问题的策略。

该应用程序连接到 API 来获取新数据,但我仍然希望在发布新的应用程序版本时不时包含更新的数据库以减少网络流量。

swiftui realm
1个回答
0
投票

我没有答案,但在预加载领域文件时,mongodb 站点的建议中缺少许多细节。尽管我可以成功加载捆绑包并查看默认领域中替换的数据,但我的应用程序会产生致命错误。所以该应用程序无法运行。问题是配置必须将只读设置为 true 才能显示数据,并且您必须设置架构版本。架构版本是问题,因为捆绑包的副本正在重置版本。将版本设置为 0 会导致属性出现大量错误。设置为 1 或更高会导致致命错误。不设置架构值也会产生错误。如果有人知道如何进行这项工作,我们将不胜感激!

© www.soinside.com 2019 - 2024. All rights reserved.