使用核心数据插入/删除异常

时间:2012-04-10 00:18:11

标签: iphone objective-c ios uitableview core-data

虽然这不是一个错误/错误,但它会作为一个例外。当我尝试使用核心数据删除或插入对象时,第一次插入或删除会显示以下错误:

  

2012-04-09 18:57:32.201 SEA [7437:fb03] * 断言失败 - [UITableView _endCellAnimationsWithContext:],/ SourceCache / UIKit_Sim / UIKit-1912.3 / UITableView.m: 1046   2012-04-09 18:57:32.203 SEA [7437:fb03] CoreData:错误:严重的应用程序错误。在调用-controllerDidChangeContent:期间,从NSFetchedResultsController的委托中捕获到异常。无效更新:第0节中的行数无效。更新(5)后现有部分中包含的行数必须等于更新前该部分中包含的行数(5),加上或减去数字从该部分插入或删除的行(插入1个,删除0个)并加上或减去移入或移出该部分的行数(0移入,0移出)。 with userInfo(null)

我有点不确定为什么会出现这个问题,因为实际的tableView会显示新行或已删除的行。数据库还显示正确的值和所有内容。 我正在使用的代码如下:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
    {
        return [[fetchedResultsController sections] count];
    }
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
    {
        return [[[fetchedResultsController sections] objectAtIndex:section] numberOfObjects];
    }

如果您需要查看更多代码,请告诉我们。

在显示所有用户的tableViewController中。我有以下内容:

(void)controllerWillChangeContent:(NSFetchedResultsController *)controller
{
    [self.tableView beginUpdates];
}
(void)controllerDidChangeContent:(NSFetchedResultsController *)controller
{
    [self.tableView endUpdates];
}

这是commitEditingStyle的代码

(void)tableView:(UITableView *)tableView commitEditingStyle: (UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (editingStyle == UITableViewCellEditingStyleDelete) {
    // Delete the row from the data source

    // Get context and user to delete
    NSManagedObjectContext *context = [fetchedResultsController managedObjectContext];
    User *userToDelete = [fetchedResultsController objectAtIndexPath:indexPath];

    // Delete user from context
    [context deleteObject:userToDelete];

    // Save!
    NSError *error = nil;
    if(![context save:&error]){
        // Handle the error..
    }

}   
else if (editingStyle == UITableViewCellEditingStyleInsert) {
    // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
  }   
}

0 个答案:

没有答案