使用我的代码删除了两行而不是一行

时间:2012-09-06 00:21:07

标签: iphone ios xcode cocoa

-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

{

  if(editingStyle==UITableViewCellEditingStyleDelete)

  {

    NSManagedObjectContext *context=[appDelegate managedobjectcontext];

    NSManagedObject *entity=[NSEntityDescription insertNewObjectForEntityForName:@"DataObject" inManagedObjectContext:context];

    for(int i=0;i<[saveddata count];i++)

    {

       entity=[saveddata objectAtIndex:indexPath.row];

       [context deleteObject:entity];

       [array removeObjectAtIndex:indexPath.row];

       [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] 
        withRowAnimation:YES];

        NSError *error=nil;

       if(![context save:&error])

       {

          //handle the error.

       }

 }

1 个答案:

答案 0 :(得分:0)

是否有使用for循环的原因?它们被删除了,因为当回到for循环时,tableView已经删除了行,它将下一行向上移动一个单位。更详细的,如果你有3行并删除indexPath.row = 1的那一行,indexPath.row = 2的行将在indexPath.row = 1处移动。 另外,我建议从创建tableview时使用的数组中删除对象。