IOS CoreData,要使用哪个NSManagedObjectContextConcurrencyType?为什么?

IOS CoreData,要使用哪个NSManagedObjectContextConcurrencyType?为什么?,ios,core-data,nsmanagedobjectcontext,Ios,Core Data,Nsmanagedobjectcontext,我无法理解NSManagedObjectContextConcurrencyType的文档。在以下情况下,我会使用哪种类型,为什么 - (void)viewDidLoad { self.managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:???]; [self loadRecordsFromCoreData]; } - (void)loadRecordsFromCoreD

我无法理解NSManagedObjectContextConcurrencyType的文档。在以下情况下,我会使用哪种类型,为什么

- (void)viewDidLoad
{
    self.managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:???];
    [self loadRecordsFromCoreData];
}


- (void)loadRecordsFromCoreData {

[self.managedObjectContext performBlockAndWait:^{
    //[self.managedObjectContext reset]; //do I need to do this?
    NSError *error = nil;
    NSFetchRequest *request = [[NSFetchRequest alloc] initWithEntityName:@"Item"];

    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"display == YES"];
    [request setPredicate:predicate];
    [request setSortDescriptors:[NSArray arrayWithObject:[NSSortDescriptor sortDescriptorWithKey:@"order" ascending:YES]]];

    self.items = nil;
    self.items = [self.managedObjectContext executeFetchRequest:request error:&error];

}];

[self displayItems];
}

-displayItems将根据self.items数组中对象的属性显示视图,例如item.image、item.title、item.descriptionContext等。

NSMainQueueConcurrencyType

UI事件(如view Dod load)发生在主线程上。您将在主线程(本例中为self.items)上操作对象,因此您应该确保它们也被提取到上下文中/保存在该线程上


NSPrivateQueueConcurrencyType
用于其工作将在后台线程上完成的上下文。

您将从多个线程中使用它吗?否。各个视图控制器是否应该有自己的上下文?或者我应该在应用程序委托中只包含一个主上下文吗?我有3个视图控制器,它们创建自己的上下文,就像这样。问题是它不是线程安全的。如果计划仅从一个线程调用它,则可以使用默认类型(线程限制类型)。每个线程只需要一个。