我一直在阅读苹果文件,仍然有一个问题,我无法找到答案。我有一个UIManagedDocument对象,它有两个嵌套的上下文 - 一个是主线程上的子对象,另一个是私有线程上的父对象。接下来,我有一个服务器端。所以,当数据从服务器到达时,我想将其插入到后台线程的托管文档中。UIManagedDocument嵌套上下文
它是线程安全的,创建一个异步队列,在那里创建一个NSManagedObjectContext,并将它设置为它的父级UIManagedDocument的在主线程中创建的子上下文?
dispatch_queue_t fetchQ = dispatch_queue_create("Data fetcher", NULL);
dispatch_async(fetchQ, ^{
//here goes some code for downloading data from the server
NSManagedObjectContext * backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundContext setParentContext:self.eventDatabase.managedObjectContext]; // is this thread safe?
//some code for creating objects in backgroundContext
NSLog(@"inserting data in background thread");
});
dispatch_release(fetchQ);
换句话说 - 是线程安全的分配到这是一个私人的线程父创建了一个背景下,这是一个主线程产生的?
BTW,不要忘记调用[backgroundContext节省:错误]或变化不会被推到父上下文。 – 2012-04-12 14:49:12
为什么不使用UIManagedDocument的parentContex,这个上下文在后台运行? – 2013-02-18 14:01:25