gpt4 book ai didi

swift - swift 中的 Realm 队列问题

转载 作者:行者123 更新时间:2023-11-28 08:51:03 25 4
gpt4 key购买 nike

我正在尝试创建一个后台线程来处理所有 Realm 交互。我好像有问题

所以我的方法是定义一个realmQueue

internal var realmQueue = dispatch_queue_create("DataRecorder.realmQueue",
DISPATCH_QUEUE_SERIAL)

我的假设是我会尝试在此队列本身上进行每个单一 Realm 的交互。

有没有办法弄清楚(除了单步执行代码)Realm 期待哪个线程?

当我尝试将我的调用包装在

中时,我遇到了线程访问错误
dispatch_async(realmQueue) {
// do realm stuff
}

我很确定我访问 Realm 的某个地方是错误的,但我在追踪事情时遇到了麻烦。

调试这些线程问题的最佳方法是什么?

最佳答案

Realm 的经验法则是对象不能在线程之间传递,每个线程都有自己的 Realm 对象实例。如果您尝试跨线程传递 Realm 实例或 Object 子类,则会发生异常。

处理将 Realm 交互移动到新线程的推荐方法是简单地在新线程上重新获取相同的 Realm 对象,然后从那里更新它。重新获取对象的最简单方法是通过线程传递其主键并调用 objectForPrimaryKey() 来获取它。

最后,虽然写入 Realm 文件会阻止其他线程的访问,但读取不会,因此您希望在使用 Realm 执行提取时只需要谨慎地使用跨线程交互。 :)

关于swift - swift 中的 Realm 队列问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34181781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com