在IOS 10中,创建NSManagedObjectContext和nsmanagedObject的步骤如下:
NSManagedObjectContext *context = ((AppDelegate*)[[UIApplication sharedApplication] delegate]).persistentContainer.viewContext;
NSManagedObject *object = [NSEntityDescription insertNewObjectForEntityForName:@"Leads" inManagedObjectContext:context];
但是,在ios 9及更高版本中,没有presistentContainer,那么如何在IOS 9中创建NSManagedObjectContext?我尝试了以下操作,但没有成功,返回nil:
- (NSManagedObjectContext *)managedObjectContext {
// Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.)
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (!coordinator) {
return nil;
}
_managedObjectContext = [[NSManagedObjectContext alloc] init];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
return _managedObjectContext;
}
答案 0 :(得分:0)
在iOS 9中,NSManagedObjectContext的实例化已更改为指定此对象的并发类型。
这意味着我们现在必须选择初始化托管对象上下文的线程:主队列,或者可能是我们创建的特殊后台队列。我们的选择是:
因此,以下内容:
_managedObjectContext = [[NSManagedObjectContext alloc] init];
应成为:
_managedObjectContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSMainQueueConcurrencyType];