controllerDidChangeContent索引超出范围

窗扇

我知道我的问题有点含糊,但我需要一些提示/想法可能是问题所在。我尝试了一切,但找不到问题。

我已经使用NSFetchedResultsControllerUITableView两次,但从未遇到过此类问题。我有一个表格视图,并使用将它与核心数据连接在一起NSFetchedResultsController我这样创建NSFetchedResultsController

NSEntityDescription *entity = [NSEntityDescription entityForName:@"EntityName" inManagedObjectContext:_database.managedObjectContext];

NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
[fetchRequest setSortDescriptors:@[]];
[fetchRequest setEntity:entity];

NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
                                          initWithFetchRequest:fetchRequest
                                          managedObjectContext:_database.managedObjectContext
                                          sectionNameKeyPath:nil
                                          cacheName:nil];

在某一时刻,当一个记录的数量超过一个表中显示的表视图的数量,并且用户尝试向下滚动到表视图的底部时,就会发生崩溃。

设想:

1)我创建insertNewObjectForEntityName并保存上下文

2)我收到controller:didChangeObject:atIndexPath:forChangeType:newIndexPath类型的委托电话NSFetchedResultsChangeInsert

3)我尝试向下滚动到表格的底部,但出现错误:

CoreData:错误:严重的应用程序错误。在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托捕获了一个异常。* -[__ NSArrayM objectAtIndex:]:使用userInfo将索引7超出范围[0 .. 6](null)

如果用户打开一个应用程序并尝试滚动到列表的底部/顶部,有时也会发生相同的崩溃。我打开了sqlite文件,所有记录都在那里。任何帮助,将不胜感激。

窗扇

谢谢你们的帮助。调试后,我意识到存在逻辑错误。滚动时触发了托管对象上下文的保存,这导致了错误。我不确定为什么不允许这样做(也许有人可以解释)。我删除了保存,现在一切正常。再次感谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章