【问题标题】:Realm db wrapper using GCD使用 GCD 的领域数据库包装器
【发布时间】:2015-11-25 09:04:14
【问题描述】:

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

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

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

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

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

谢谢!

【问题讨论】:

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


    【解决方案1】:

    没有简单的内置方法可以将 Realm 对象拉回内存。 (对于具有循环关系的对象来说,这是一项非常重要的任务。)

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

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

    【讨论】:

    • 希望 Realm 团队很快会深入研究这个问题。直到应该应用这种变通方法。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多