ios - 一个 Realm 数据模型的变化需要迁移另一个 Realm 。为什么?

标签 ios swift realm

我的应用程序中有两个 Realm 数据库。

其中一个随应用程序提供(用户只读),位于 NSBundle.MainBundle 中。 另一个创建(为用户读写)并存储在文档目录中。

但是,如果我对捆绑 Realm 中的模型进行更改,则用户创建的 Realm 无法正常工作并提示需要迁移。

这怎么可能?这是位于不同位置的两个不同 Realm 。

在具有 3 个不同 Realm (存储在同一位置,但名称不同)的虚拟项目中进行一些测试后,我可以在 RealmBrowser 中看到所有类名都包含在 Realm 文件中。他们为什么混在一起?它们不应该是独立的数据库吗?

虽然我们是主题之一: 创建多个 Realm 文件与创建具有多个类的 Realm 文件有什么区别?

感谢任何澄清!

问候,

埃里克

最佳答案

默认情况下,Realm 文件将在首次访问应用程序二进制文件中定义的所有 Realm 模型时在后备文件中创建“表”。这使得使用单个 Realm 的常见情况对于最终用户来说变得极其简单。即使您正在使用多个 Realm ,但您希望它们都共享同一组模型,这也非常简单并且受此默认行为支持。

如果您想使用多个 Realm ,每个 Realm 都有不同的模型,您可以将模型传递给 Realm.ConfigurationobjectTypes 属性:

let config = Realm.Configuration(objectTypes: [MyClass.self, MyOtherClass.self])
let realm = try! Realm(configuration: config)

您可以在 Class Subsets 中阅读有关此功能的更多信息Realm 文档的一部分。

关于ios - 一个 Realm 数据模型的变化需要迁移另一个 Realm 。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344624/

相关文章:

ios - 可以通过 Wifi 连接两个或多个 ipad 吗?

ios - 你如何在 Swift 中的 View Controller 之间传递数据?

swift - 在 Swift 的 CGPoints 数组中找到最左边位置的正确方法

swift - 如何在 Swift 中将字符串转换为 Int?

swift - 使用swift在 Realm 中添加json数组(包含内部数组)

ios - swift Realm::In CorrectThreadException:从错误的线程访问 Realm

ios - 通用设置中的 iOS 开发者菜单在哪里

ios - 在异步调用完成后如何运行代码并且代码在 swift 3 中的异步函数之外

swift - 如何为 completionHandler 引发错误?

android - 如何解析 RealmObject setter 中的数据?