我正在使用MagicalRecord 2.2,并且默认情况下尝试在后台线程上运行我的fetch查询,但似乎文档已经过时了。具体来说它说:
If you need to create a new managed object context for use in non-main threads,
use the following method:
NSManagedObjectContext *myNewContext = [NSManagedObjectContext MR_newContext];
但是,缺少MR_newContext
方法(猜测它已被弃用)。有一个[NSManagedObjectContext MR_context]
方法,但我不确定它返回的上下文。深入到代码中,它创建了一个并发类型为NSPrivateQueueConcurrencyType
的新上下文,所以我猜这就是我正在寻找的。 p>
有人可以确认吗?
答案 0 :(得分:0)
您可能想要使用
[NSManagedObjectContext MR_confinementContext]
尽管由于CoreData团队已经有效地弃用了限制语境,但这个名称也可能会发生变化。
答案 1 :(得分:-2)
我认为你最好使用+ (NSManagedObjectContext *) MR_contextForCurrentThread;
。它的实现似乎适合您的目的:
+ (NSManagedObjectContext *) MR_contextForCurrentThread;
{
if ([NSThread isMainThread])
{
return [self MR_defaultContext];
}
else
{
NSMutableDictionary *threadDict = [[NSThread currentThread] threadDictionary];
NSManagedObjectContext *threadContext = [threadDict objectForKey:kMagicalRecordManagedObjectContextKey];
if (threadContext == nil)
{
threadContext = [self MR_contextWithParent:[NSManagedObjectContext MR_defaultContext]];
[threadDict setObject:threadContext forKey:kMagicalRecordManagedObjectContextKey];
}
return threadContext;
}
}