我无法理解 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数组中对象的属性显示view,比如item.image, item.title, item.descriptionText等
最佳答案
NSMainQueueConcurrencyType
。
UI 事件,例如 View 加载,发生在主线程上。您将在主线程(本例中为 self.items)上操作您的对象,因此您应该确保将它们提取到上下文中/也保存在该线程中。
NSPrivateQueueConcurrencyType
适用于其工作在后台线程上完成的上下文。
关于IOS CoreData,使用哪个 NSManagedObjectContextConcurrencyType,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12399277/