I use core data like this:
- (NSManagedObjectContext *)managedObjectContext {
@synchronized(self) {
if (_managedObjectContext != nil) {
return _managedObjectContext;
}
NSPersistentStoreCoordinator *coordinator = [self persistentStoreCoordinator];
if (coordinator != nil) {
_managedObjectContext = [NSManagedObjectContext new];
[_managedObjectContext setPersistentStoreCoordinator:coordinator];
}
}
return _managedObjectContext;
}
- (NSManagedObjectModel *)managedObjectModel {
@synchronized(self) {
if (_managedObjectModel != nil) {
return _managedObjectModel;
}
NSString *path = [[NSBundle mainBundle] pathForResource:@"DB" ofType:@"momd"];
if (path) {
NSURL *momURL = [NSURL fileURLWithPath:path];
_managedObjectModel = [[NSManagedObjectModel alloc] initWithContentsOfURL:momURL];
}
}
return _managedObjectModel;
}
But sometimes i have crash: Collection <__NSCFSet: 0x14c5bffdq> was mutated while being enumerated. What wrong? How to use core data with multithreading?