我将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,就像我想做的那样吗?