Mug*_*nth 6 iphone cocoa cocoa-touch core-data
我有一个核心数据应用程序.在生产者线程中,我从Web服务中提取数据并将其存储在我的对象中并调用save.我的使用者对象是一个显示相同的表视图控制器.然而,应用程序崩溃,我得到NSFetchedResultsController错误:期望在部分(null)中找到对象(实体:FeedEntry; id:0xf46f40;数据:)以进行删除
在控制台上.当我调试它时,一切正常.所以我明白这就像种族问题.
这些问题是如何解决的?使用核心数据设计生产者 - 消费者应用程序的最佳方法是什么?
sbo*_*oth 16
如果您的目标是Leopard或更高版本,那么Apple可以让您更轻松.
在生产者线程中,在主线程中创建一个与MOC具有相同PSC的MOC.您可以从此线程中的Web服务中提取对象,创建新对象,并将其保存为正常情况.
在消费者线程中,将控制器添加为NSManagedObjectContextDidSaveNotification的观察者.你的回调应该类似于:
- (void) managedObjectContextDidSave:(NSNotification *)notification
{
NSManagedObjectContext *managedObjectContext = [notification object];
if(managedObjectContext != self.managedObjectContext)
[self.managedObjectContext mergeChangesFromContextDidSaveNotification:notification];
}
Run Code Online (Sandbox Code Playgroud)
这样,保存在生成器线程中的对象将自动拉入您的使用者线程中.
归档时间: |
|
查看次数: |
1940 次 |
最近记录: |