使用 GCD 的领域数据库包装器

Realm db wrapper using GCD

我已经在 Realm 周围实现了包装器(管理器)以简化其使用。我已经制作了 udpate 和 fetch 方法来更新和从数据库中获取数据。所有写入和读取都在自定义 GCD 异步队列上进行。

我已经承认 Realm 对象不是线程安全的。

但是我希望在主线程上有本地(在缓存中)获取对象的实例,因为我不想每次访问都从 Realm 数据库读取数据。

就像你可能知道这行不通,因为它给了我这个讨厌的 accessed from incorrect thread 错误。

在主线程上拥有对象的本地副本并仍然能够在数据库中更新此对象的适当解决方案是什么?

谢谢!

没有简单的内置函数可以将 Realm 对象拉回到内存中。 (对于具有关系的对象来说,这是一项非常重要的任务,因为这些关系可能是循环的。)

目前,最简单的方法是传递主键/索引,并依靠它们通过线程特定的领域独立访问对象。

请注意,有第 3 方组件 RBQSafeRealmObject,它一般实现此策略并隐藏正确领域的实例化和通过主键检索对象。