在后台和主线程中使用托管对象上下文

时间:2013-01-29 10:45:18

标签: iphone ios5 core-data

我点击按钮时调用了一个函数。此外,还有从此方法调用的方法[self getData],它使用核心数据更新db中的值。

另外,我有一个运行后台线程,每隔一分钟执行一次。我在后台线程中使用了单独的托管对象上下文和托管对象通知。但我不确定是否在[self managedObjectContext]中使用新的托管对象实例或[self getData],因为在主线程上调用此方法并且我是否必须使用托管对象通知?

在背景和主线程上运行方法时,这些情况下的最佳做法是什么。

1 个答案:

答案 0 :(得分:2)

您可以使用私有队列并发类型创建临时上下文,该类型是主要托管对象上下文的子级:

NSManagedObjectContext *temporaryContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
temporaryContext.parentContext = [self managedObjectContext];
[temporaryContext performBlock:^{
   // ...
}]

我在工作时如何做到这一点时发现本教程非常有用: http://www.cocoanetics.com/2012/07/multi-context-coredata/