我不了解NSFetchedResultsController并从MOC中删除对象?

时间:2013-04-25 18:26:15

标签: cocoa core-data nsfetchedresultscontroller

我使用NSFetchedResultsController成功更新了一个tableview,这就是我正在做的事情:

  • 加载应用应用并致电- (NSFetchedResultsController *)fetchedResultsController以填充tableview
  • 设置self.fetchedResultsController.delegate = nil
  • 删除名为<myEntityName>
  • 的所有实体
  • 使用[NSEntityDescription insertNewObjectForEntityForName:<myEntityName> inManagedObjectContext:managedObjectContext];
  • 一个或多个实体插入MOC
  • 挂钩FetchedResultsController备份:self.fetchedResultsController.delegate = self;
  • 然后我保存了MOC

在这之后,FetchedResultsController方法controllerDidChangeContent:触发,我放置了[self.tableView reloadData]表更新,我很高兴。

再一次,这一切都运行正常。当我简单地删除 [NSEntityDescription insertNewObjectForEntityForName:entityName inManagedObjectContext:managedObjectContext];消息时,导致我的头部敲击时间的原因是,我收到以下错误:

'NSInternalInconsistencyException', reason: 'no section at index 3'

我一般都知道发生了什么:MOC与FetchedResultsController不一致,似乎当其他人遇到这种情况时,他们开始拉出controller:didChangeObject:atIndexPath:forChangeType:newIndexPath:configureCell:atIndexPath:来更新一行上的fetchController按行计算。

但我的问题是:为什么简单删除managedObject插入消息会导致我的其他工作代码中断?

在我的原始代码中,我删除了mangagedObjects然后插入managedObjects就好了,但是当我只删除managedObjects时,代码就会中断。

我不需要单独更新每个单元格,我当前的代码工作正常。我如何使它工作?

我在这里缺少什么?

0 个答案:

没有答案