CoreData:错误:严重的应用程序错误.在Core Data更改处理期间捕获到异常

ven*_*par 7 core-data objective-c ios

嗨,我崩溃了,

当我试图在背景中向数据库插入1000条记录时,我得到以下异常: CoreData: error: Serious application error.在Core Data更改处理期间捕获到异常.
这通常是观察者中的一个错误

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'
Run Code Online (Sandbox Code Playgroud)

我用代码插入了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];
Run Code Online (Sandbox Code Playgroud)

Baa*_*alu 16

不要使用一个上下文同时从2个线程(Main,Background)访问相同的数据库(持久性存储协调器).不建议这样做.它导致App崩溃.

创建NSManagedContext对象并设置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];}
Run Code Online (Sandbox Code Playgroud)


aru*_*vma 2

您是否使用相同的上下文同时从两个线程访问数据库?也许就是这个原因。看到这个问题

添加到 NSMutableArray 时出现问题:尝试在 10 处插入 nil 对象