领域的问题迅速排队

时间:2015-12-09 14:50:03

标签: swift realm

我尝试制作一个后台线程来处理所有领域的交互。我似乎有问题

所以我的方法是定义Socket

realmQueue

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

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

当我尝试将调用包装在

中时,我收到了线程访问错误
internal var realmQueue = dispatch_queue_create("DataRecorder.realmQueue",
                                                 DISPATCH_QUEUE_SERIAL)

我非常确定在某个地方我访问了错误但我无法跟踪内容。

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

1 个答案:

答案 0 :(得分:0)

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

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

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