使用核心数据和线程有哪些晦涩难关?我已经阅读了很多文档,到目前为止,我在文档中或通过痛苦的经历遇到了以下内容:
奖金问题/观察:我被引导相信一些文档的措辞mergeChangesFromContextDidSaveNotification:主线程只需要将更改合并到工作线程的“主”上下文中 - 但我不知道认为就是这样。
我设置我的导入器来创建批量数据,这些数据是使用拥有它自己的上下文的NSOperation的子类导入的。操作被加载到NSOperationQueue中,该QSO设置为允许默认的并发操作数,因此可以同时运行多个导入批次。我偶尔会得到非常奇怪的验证错误和异常(比如尝试将nil添加到关系中)以及我在主线程上执行所有相同操作时从未见过的其他失败。它发生在我身上(也许这应该是显而易见的)可能需要为每个线程中的所有上下文完成上下文合并 - 而不仅仅是“主要”线程!我不知道为什么我之前没有想到这一点,但我认为这有帮助。 (尽管如此,它还没有经过足够的测试,但我确信。)在任何情况下,您是否需要观察可能使用相同数据集并添加/更新所有导入线程的通知相同的实体?如果是这样,这是IMO的另一个陷阱要点,尽管我还没确定它会起作用。
考虑到我在Core Data中遇到了多少这些(而不仅仅是多线程),我不得不想知道还有多少潜伏。由于多线程经常因为时间问题而难以复制的错误(如果不是不可能的话),我想我会问有没有其他重要的事情,我可能会遗漏,我需要关注自己。< / p>