1

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

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

当有方法在后台和主线程上运行时,在这些情况下,最佳实践是什么。

4

1 回答 1

2

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

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

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

于 2013-01-29T12:57:54.820 回答