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

时间:2019-03-18 14:10:45

标签: ios swift realm

我使用Realm for Swift进行仅内存配置。由于在后台线程中更新数据库,因此每次使用时都会创建一个Realm实例。 Realm documentation中提到了这一点,这里https://stackoverflow.com/a/45375608/613121提到了另一个问题。

但是通过测试数据库,我注意到了不可预测的行为。有时数据库是空的,更新会重新填充数据库而不是更新。原因可能是该领域在撰写之后被释放了。

解决方案可能是在主线程中保留强引用。我将Realm配置保存为单例。单身人士返回具有相同配置的新Realm进行更新,并强烈引用另一个Realm以防止丢失,这是否安全?

1 个答案:

答案 0 :(得分:1)

听起来应该不错。您必须尝试一下,这可能比在这里等待明确的答案要快。

我要编写一个单例类,作为构造函数的一部分,它定义Realm配置并进行存储,还打开并存储该领域的实例。然后,我向该类添加一个访问器,以供您的线程使用;它将使用相同的配置返回领域的新实例。当这些超出范围(并且您应该允许它们超出范围)时,由于单例实例保持其引用,因此您的领域将保持不变。

我可能错误地读了您的第一个参考问题,但这与内存领域无关,因此不要求您在某处保留参考。