我知道我的问题有点模糊,但我需要一些线索/想法可能是问题所在。我尝试了一切,但我找不到问题。
我曾使用NSFetchedResultsController
和UITableView
几次,并且从未遇到过这类问题。我有一个表视图,并使用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:错误:严重的应用程序错误。抓住了一个例外 在调用期间来自NSFetchedResultsController的委托 -controllerDidChangeContent :. * - [__ NSArrayM objectAtIndex:]:索引7超出边界[0 .. 6] with userInfo(null)
如果用户打开应用并尝试滚动到列表的底部/顶部,有时也会发生同样的崩溃。我打开了sqlite文件,所有记录都在那里。任何帮助,将不胜感激。
答案 0 :(得分:0)
谢谢你们的帮助。调试后我意识到存在逻辑错误。在滚动时触发了对托管对象上下文的保存,这导致了错误。我不确定为什么不允许这样做(也许有人可以解释)。我删除了保存,现在一切正常。再次感谢!