从节中删除最后一行时的NSInternalInconsistencyException

时间:2009-08-18 12:11:42

标签: iphone objective-c uitableview core-data

我有一个iPhone 3.0应用程序,可以处理使用Core Data的请求。它有一个视图,所有请求按请求状态分组(sectionNameKeyPath:@“status”)。此外,它还有另一个视图,用户可以在其中更改请求状态。

当特定组中有一行/请求并且用户编辑该请求的状态(因此该行所属的部分应该消失)时,我遇到问题,以下代码引发异常:< / p>

//Change the request status. Request is the NSManagedObject
request.status = [NSNumber numberWithInt:Responded];

// Save the context.
NSError *error;
//The exception is raised at the following line
if (![request.managedObjectContext save:&error]) {
  NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
  abort();  // Fail
}

异常文本如下: 2009-08-18 15:04:55.866应用程序[263:20b] ***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无效更新:第0节中的行数无效。包含的行数更新后的现有部分(8)必须等于更新前的该部分中包含的行数(1),加上或减去从该部分插入或删除的行数(0插入,0删除)。

任何人都可以解释为什么我有这个例外以及如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:3)

这表明问题出在您的表修改代码中。大概是你正在调用[table deleteRowsAtIndexPaths:withRowAnimation:],而不是同步你的-numberOfSectionsInTableView;和-tableView:numberOfRowsInSection:结果为新值。