我已经在Realm
周围实现了包装器(管理器),以简化其使用。我已经制作了udpate和fetch方法来更新数据并从数据库中获取数据。所有写入和读取都在自定义GCD
异步队列中进行。
我已经承认Realm
个对象不是线程安全的。
但是我想在主线程上有本地(在缓存中)获取对象的实例,我不希望每次访问都从Realm
db读取数据。
就像你可能知道这不会起作用,因为它给了我这个令人讨厌的accessed from incorrect thread
错误。
在主线程上拥有对象的本地副本并且仍能在db中更新此对象的适当解决方案是什么?
谢谢!
答案 0 :(得分:2)
没有简单的内置功能可以将Realm对象拉回到内存中。 (对于具有关系的对象,这是一项非常重要的任务,因为它们可能是循环的。)
目前,最简单的方法是传递主键/索引,并依赖它们通过特定于线程的Realm独立访问对象。
请注意,存在第三方组件RBQSafeRealmObject,它通常实现此策略,并通过主键隐藏正确Realm和对象检索的实例化。