CoreData,Multi Threading和Bindings同时进行

时间:2011-09-05 10:36:26

标签: multithreading cocoa core-data cocoa-bindings

我创建了一个小型测试应用。它创建了一家新公司和一些x员工。

员工是在他们自己的线程中创建的,一旦完成,他们就会被添加到公司。

因为不允许在线程之间共享托管对象,所以我使用公司的对象ID。

为了不同时读取/写入相同的托管对象上下文,我为每个线程创建一个临时上下文。我使用 - (void)mergeChanges:(NSNotification *)Notifikation并合并man上下文和线程中的上下文之间的更改。

我使用两个app控制器和绑定在两个表视图中显示公司及其员工。

但仍有一个我无法修复的错误。每当我与员工一起创建一家新公司时,并非所有员工都出现在表格视图中。不知怎的,他们迷路了,但我无法弄清楚在哪里。

我已在此处上传了Xcode项目:http://uploading.com/files/7894m9mc/CoreDataMultiThreading.zip/

我正试图找到一个星期的错误:(也许其他人有更多的运气。

注意:我想要尝试使用该应用程序的是在自己的线程(员工)中创建许多对象,并在创建这些对象后立即将这些对象添加到同一个对象(公司)。

(请原谅我糟糕的发音)

1 个答案:

答案 0 :(得分:1)

问题出现了,因为许多Employee对象在与前台线程合并后将company关系设置为nil。由于它们没有company关系对象,因此它们不会显示在UI中。

我不确定为什么合并将关系设置为nil。它可能与同时发生多个合并或尝试合并无故障的故障对象有关。