使用GCD的Realm db包装器

时间:2015-11-25 09:04:15

标签: ios database swift grand-central-dispatch realm

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

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

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

就像你可能知道这不会起作用,因为它给了我这个令人讨厌的accessed from incorrect thread错误。

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

谢谢!

1 个答案:

答案 0 :(得分:2)

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

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

请注意,存在第三方组件RBQSafeRealmObject,它通常实现此策略,并通过主键隐藏正确Realm和对象检索的实例化。