我有一个UITableView设置为NSFetchedResultsControllerDelegate . 我有一个后台线程获取数据(在一个单独的managedObjectContext中) . 两个上下文共享同一个商店协调员 . 从背景上下文中删除对象时(保存后),我收到以下错误:
在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托中捕获到异常 . * - [NSMutableArray removeObjectAtIndex:]:索引0超出带有userInfo(null)的空数组的边界
我在后台线程上添加了一个观察者,如下所示:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didsave:)
name:NSManagedObjectContextDidSaveNotification
object:[self managedObjectContext]];
和我的didsave:实现如下:
-(void)didsave:(NSNotification *)nofication {
MyAppDelegate *myApp = (MyAppDelegate*)[[UIApplication sharedApplication] delegate];
NSManagedObjectContext *mainContext = [myApp managedObjectContext];
[mainContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:) withObject:nofication waitUntilDone:YES]; }
在didChangeContent的UITableView控制器中:
case NSFetchedResultsChangeDelete:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
break;
我不能混合fetchControllerDelegate和另一个背景MOcontext,就像我想做的那样?