4

在 aUITableViewController中,我将 anNSFetchedResultsController用于我的数据。一切正常,除了当我开始在一个单独的线程中导入一些对象时:我使用NSOperationQueue我将对象插入到我的ManagedObjectContext. 这发生在单独的视图中。NSFetchedResultsController似乎不喜欢这样并写入控制台:

严重的应用程序错误。在调用 -controllerDidChangeContent: 期间,从 NSFetchedResultsController 的委托中捕获了一个异常。尝试使用 userInfo (null) 为单元格创建两个动画

显然它试图获取新对象。

关于并发的话题,Core Data Programming Guide说了类似ManagedObjectContext为每个线程使用一个,但这听起来相当复杂。

我现在不知道我是否应该真正创建自己的NSOperation子类,在其中创建一个ManagedObjectContext等等,或者是否可以阻止NSFetchedResultsController更新一段时间?

我会很感激一些帮助,法比安

4

1 回答 1

4

你需要一个NSManagedObjectContext线程,对不起!

不仅 NSFetchesResultsController 将访问您的上下文 - coreData 不会获取一些数据,直到您的上下文需要它可能随时被访问。

但是,这只是您需要在每个线程的基础上创建的上下文。只需在您的委托上编写一个方法,该方法创建一个托管对象上下文并在您的每个 NSOperations 中调用它 - 这将使它们每个线程而不是全部使用同一个线程。

也可以使用此方法创建主线程上的托管上下文。

于 2010-12-12T17:06:38.600 回答