NSFetchedresultsController在删除依赖对象时崩溃

时间:2011-10-14 08:01:11

标签: iphone core-data nsfetchedresultscontroller

我正在使用来自这篇精彩文章的NSFetchResultsControlleDelegate方法: http://iphonedevelopment.blogspot.com/2009/11/i-know-youre-tired-of-hearing-about.html 但是:

我有一种特殊情况,即我的tableview中的对象彼此连接。 所以:如果我删除了一个对象,我会在回调中获得2个事件:on NSFetchedResultsChangeDeleteNSFetchedResultsChangeUpdate

由于indexPath无效,该方法在NSFetchedResultsChangeDelete分支中崩溃。 我看了一会儿,虽然有一些解决方法,但还没有找到一个干净的解决方案。 任何提示?

提前致谢

1 个答案:

答案 0 :(得分:1)

如果删除的对象是其表视图部分中的唯一对象,则其他对象的部分将更改。部分更改也会导致indexPath也发生更改。如果您仍尝试使用旧的indexPath访问该对象,则该应用程序将崩溃。 要解决此问题,请使用newIndexPath方法参数(如果可用):

        NSIndexPath* ip = nil;
        if (newIndexPath != nil) {
            ip = newIndexPath;
        } else {
            ip = indexPath;
        }
        NSManagedObject *changedObject = [controller objectAtIndexPath:ip];

希望有所帮助。 干杯, 基督教