创建NSManagedObjectContext以在线程中使用

Mar*_*ler 2 cocoa core-data objective-c

我正在尝试创建NSManagedObjectContext的新实例,以便我可以在主要线程之外的线程中执行获取请求.据我所知,每个线程都需要它自己的实例,尽管它们可以共享商店.

我的应用是基于核心数据文档的应用.

这里读了一下我有这个代码:

NSManagedObjectContext *managedObjectContextForThread = nil;
NSPersistentStoreCoordinator *coordinator = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:self.managedObjectModel];

if (coordinator != nil) {
    managedObjectContextForThread = [[NSManagedObjectContext alloc] init];
    [managedObjectContextForThread setPersistentStoreCoordinator:coordinator];
    [managedObjectContextForThread setUndoManager:nil];
}
Run Code Online (Sandbox Code Playgroud)

它运行但是当我执行提取时我没有得到任何结果,我怀疑是因为NSPersistentStoreCoordinator未正确设置.

我该如何设置商店协调员与我的主商店合作?或者还有其他我在这里缺少的东西?

Chr*_*isH 5

Apple的"通常推荐的方法"是在上下文中共享一个持久存储协调器.理想情况下,您已经拥有对应用程序主要托管对象上下文的引用,并使用该上下文的持久性存储协调器.

NSManagedObjectContext *managedObjectContextForThread = [[NSManagedObjectContext alloc] init];;
[managedObjectContextForThread setPersistentStoreCoordinator:myMainContext.persistentStoreCoordinator];
Run Code Online (Sandbox Code Playgroud)

请参阅Apple的核心数据编程指南中的 "与核心数据并发"