我正在使用来自这篇精彩文章的NSFetchResultsControlleDelegate方法: http://iphonedevelopment.blogspot.com/2009/11/i-know-youre-tired-of-hearing-about.html 但是:
我有一种特殊情况,即我的tableview中的对象彼此连接。
所以:如果我删除了一个对象,我会在回调中获得2个事件:on NSFetchedResultsChangeDelete
和NSFetchedResultsChangeUpdate
。
由于indexPath无效,该方法在NSFetchedResultsChangeDelete分支中崩溃。 我看了一会儿,虽然有一些解决方法,但还没有找到一个干净的解决方案。 任何提示?
提前致谢
答案 0 :(得分:1)
如果删除的对象是其表视图部分中的唯一对象,则其他对象的部分将更改。部分更改也会导致indexPath也发生更改。如果您仍尝试使用旧的indexPath访问该对象,则该应用程序将崩溃。 要解决此问题,请使用newIndexPath方法参数(如果可用):
NSIndexPath* ip = nil;
if (newIndexPath != nil) {
ip = newIndexPath;
} else {
ip = indexPath;
}
NSManagedObject *changedObject = [controller objectAtIndexPath:ip];
希望有所帮助。 干杯, 基督教