是否可以更改NSPersistentDocument的managedObjectContext的并发类型?

时间:2016-12-23 13:04:29

标签: objective-c multithreading core-data nsmanagedobjectcontext nspersistentdocument

我需要NSPersistentDocument的managedObjectContext的并发类型为NSMainQueueConcurrencyType,因为我需要其他线程中的上下文。

2 个答案:

答案 0 :(得分:4)

documentation for NSPersistentDocument说明managedObjectContext属性:

  

如果要自定义持久性堆栈的创建,请在自定义子类中重新实现此属性,并使用实现创建适当的对象。

这似乎很清楚。重写此属性并使用您想要的任何并发类型。你试过吗?它不起作用吗?

答案 1 :(得分:1)

是的,你是对的。覆盖manageObjectContext可以修改并发类型。也许,我有一些错误。

 - (NSManagedObjectContext *)managedObjectContext {
    __strong static NSManagedObjectContext *myManagedObjectContext = nil;

    if (myManagedObjectContext == nil) {
        myManagedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];

        NSPersistentStoreCoordinator *psc = [[NSPersistentStoreCoordinator alloc] initWithManagedObjectModel:[self managedObjectModel]];
        [myManagedObjectContext setPersistentStoreCoordinator:psc];
    }

    return myManagedObjectContext;
}