具有后台进程的领域实例丢失数据

Realm instances with background process loses data

我将 Realm 用于 Swift,仅配置内存。由于在后台线程中更新数据库,我每次使用它时都会创建一个 Realm 实例。 Realm documentation and another question here .

中提到了这一点

但是通过测试数据库,我发现了一个不可预测的行为。有时数据库是空的,更新会重新填充数据库而不是更新。原因似乎是 Realm 在写入后被释放了。

解决方法可能是在主线程中持有一个强引用。我将 Realm 配置保存在一个单例中。单身人士 returns 一个具有相同更新配置的新 Realm 并持有对另一个 Realm 的强引用以防止丢失是否安全?

听起来应该没问题。您必须尝试一下,这可能比在此处等待确定的答案更快。

我会写一个单例 class,它作为构造函数的一部分定义了领域配置并存储它,还打开并存储了该领域的一个实例。然后我会向 class 添加一个访问器供您的线程使用;它将 return 使用相同配置的领域的新实例。当它们超出范围时(并且您应该允许它们超出范围),由于单例实例维护其引用,您的领域将持续存在。

我可能错误地阅读了您提到的第一个问题,但这不是处理内存中的领域,因此不要求您在某处保留引用。