Reputation: 141
Hi I'm getting crash,
when i'm trying to insert 1000 records into db in back ground, i'm getting following exception:
CoreData: error: Serious application error
. Exception was caught during Core Data change processing.
This is usually a bug within an observer of
NSManagedObjectContextObjectsDidChangeNotification. -[__NSCFSet addObject:]: attempt to insert nil with userInfo (null)2013-11-19 09:41:19.587 3pTalk[7487:907]
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSCFSet addObject:]: attempt to insert nil'
I used the code for inserting objexts
dispatch_queue_t myBackgroundQ = dispatch_queue_create("com.sample.addressbook", NULL);
// Could also get a global queue; in this case, don't release it below.
dispatch_time_t delay = dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC);
dispatch_after(delay, myBackgroundQ, ^(void){
[self userAddressbook];
});
dispatch_release(myBackgroundQ);
[self performSelectorOnMainThread:@selector(startSyncLoader) withObject:nil waitUntilDone:YES];
Upvotes: 7
Views: 11230
Reputation: 243
Dont access same Database(Persistent Store Coordinator) from 2 threads(Main,Background) simultaneously with one context. This is not recommended. it causes App Crash.
create NSManagedContext Object and set persistentstoreCoordinator.
dispatch_queue_t request_queue = dispatch_queue_create("com.xxx.ScsMethod", NULL);
dispatch_async(request_queue, ^{
NSPersistentStoreCoordinator *mainThreadContextStoreCoordinator = [context persistentStoreCoordinator]; //
NSManagedObjectContext *context = [[NSManagedObjectContext alloc] init]; //
[context setPersistentStoreCoordinator:mainThreadContextStoreCoordinator];}
Upvotes: 16
Reputation: 933
Are you accessing the database from two threads simultaneously?, using same context? That may be the reason. see this question
Problems Adding to NSMutableArray: attempt to insert nil object at 10
Upvotes: 2