我知道我的问题有点含糊,但我需要一些提示/想法可能是问题所在。我尝试了一切,但找不到问题。
我已经使用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:错误:严重的应用程序错误。在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托捕获了一个异常。* -[__ NSArrayM objectAtIndex:]:使用userInfo将索引7超出范围[0 .. 6](null)
如果用户打开一个应用程序并尝试滚动到列表的底部/顶部,有时也会发生相同的崩溃。我打开了sqlite文件,所有记录都在那里。任何帮助,将不胜感激。
谢谢你们的帮助。调试后,我意识到存在逻辑错误。滚动时触发了托管对象上下文的保存,这导致了错误。我不确定为什么不允许这样做(也许有人可以解释)。我删除了保存,现在一切正常。再次感谢!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句