realm - 错误: Realm at path '/var/.../default.realm' already opened on current thread with different schema

标签 realm

尝试在 iOS 设备/模拟器上的新构建/安装上执行 Realm.open({schema: [Schema]}) 时出现此错误。 Android 应用程序上一切正常,因为它以前从未通过迁移更改过 schemaVersions。

我对此错误的理解是设备上 Realm 文件的 schemaVersion 与 Realm.open({schema: [Schema]} 的默认 schemaVersion: 0 不同)。我的另一个理论是,我的应用程序正在尝试在同一文件上现有打开的 Realm 配置期间打开 Realm 配置。

为了解决我的第一个理论,我一直在尝试使用 Realm.clearTestState()Realm.deleteFile({schema: [Schema]})< 重置 Realm 文件 无济于事。对于第二个,我在 setTimeout() 中放置了并发 Realm.open() 实例,以便一次仅打开一个 Realm 实例。

是否有任何其他方法可以尝试重置 Realm 文件,以便设备上的 Realm 文件和配置都是相同的架构?

最佳答案

事实证明,我没有在每个实例中打开具有完全相同架构的 Realm 。这意味着我从 realm.js 文件中导出多个对象模式,并单独打开它们而不是作为一个整体打开它们,我认为这是正确的方法。

所以基本上,我正在这样做......

Realm.open({schema: [object1, object2, object3]})
Realm.open({schema: [object4, object5]})

当我应该这样做时:

const Schema = [object1, object2, object3, object4, object5];
Realm.open({schema: Schema});

希望这可以帮助其他遇到此问题的人,因为我访问过 Github 和 StackOverflow 上的所有其他类似错误报告,但没有遇到此提示。

关于realm - 错误: Realm at path '/var/.../default.realm' already opened on current thread with different schema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48603053/

相关文章:

database - Realm with React Native,如何通过列表对象进行查询

ios - 删除旧对象并添加具有相同主键的新对象会导致问题吗?

swift - 执行添加主键的 Realm 迁移

ios - Objective-C Swift 与 Realm 的互操作性

ios - 在 Realm Swift 中过滤嵌套数组上的对象

ios - Realm-Swift CocoaPod 导入后未知属性属性 'class'

xcode - 对象 'name' 上不存在主键属性 'RealmSwiftPermissionRole'

ios - Realm 无法在 Xcode 9.2 上使用 SIGNAL SIGABRT

swift - Realm Swift - 按 ID 查找

ios - 如何使用 Realm Swift 将旧属性迁移到新对象中