我的crashlogs,我发现一个有趣的崩溃,我无法弄清楚它为什么发生。我也无法复制它。NSFetchedResultsController“调用objectAtIndexPath之前无法访问获取的对象”-performFetch:“崩溃时:
它坠毁时,我实现tableView:didSelectRowAtIndexPath:
方法内以下行,当用户点击一个单元格:
fetchedResultsController?.objectAtIndexPath(indexPath) as! SearchResultEntity
崩溃:
Fatal Exception: NSInvalidArgumentException
cannot access fetched objects before -performFetch:
的事情是,performFetch:
被称为在视图控制器的viewDidLoad
方法。因此,performFetch:
不可能在tableView:didSelectRowAtIndexPath:
调用委托方法之前调用。或者是?
我使用NSFetchedResultController显示数据库结果的相当常见的设置。随着旧记录被删除并插入新记录,数据库中的记录频繁更改。
我想到的一件事是用户可以点击单元格,而其相关对象已从CoreData中删除,并且表格视图正在动画删除更改。那可能吗?
如果这是原因,有什么办法如何避免它?