title: UITableView deleteRowsAtIndexPath crash when delete last record
body: <p>I'm encountering the following error when I delete the last record from a <code>UITableView</code>. </p>
  
  <blockquote>
    <p>Terminating app due to uncaught exception
    'NSInternalInconsistencyException', reason: 'Invalid update: invalid
    number of rows in section 0.  The number of rows contained in an
    existing section after the update (3) must be equal to the number of
    rows contained in that section before the update (1), plus or minus
    the number of rows inserted or deleted from that section (1 inserted,
    1 deleted) and plus or minus the number of rows moved into or out of
    that section (0 moved in, 0 moved out).'</p>
  </blockquote>
  
  <p>My goal is to show "No Record found" if the table array is empty.</p>
  
  <p>This is the code I'm using. When I delete the last record from table array the app crashes. How is it possible to reload the table and show "No Record Found" label?</p>
  
  <pre><code>// Customize the number of rows in the table view.
  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
      if ([idArray count]==0) {
          return  3;
      }
      else 
      {
          return [idArray count];
      }   
  }
  
  // Customize the appearance of table view cells.
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
  
      NSLog(@"array count %d",[idArray count]);
      if ([idArray count] == 0) {
          static NSString *CellIdentifier = @"Cell";
  
          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
          if (cell == nil) {
              cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
          }
          cell.textLabel.textAlignment = UITextAlignmentCenter;
  
          tableView.userInteractionEnabled = NO;
  
          self.navigationItem.leftBarButtonItem.enabled = NO;
           NSUInteger row = [indexPath row];
  
          switch (row) {
              case 0:
                  cell.textLabel.text = @"";
                  break;
              case 1:
                  cell.textLabel.text = @"";
                  break;
  
              case 2:
                  cell.textLabel.text = @"No Records Found";
                  break;
  
  
              default:
                  break;
          }        
  
          return cell;
      }
      else
      {   static NSString *CellIdentifier = @"Cell";
  
          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
          if (cell == nil) {
              cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
          }
  
          tableView.userInteractionEnabled = YES;
  
          self.navigationItem.leftBarButtonItem.enabled = YES;
  
          // Set up the cell
          identify *idItems = [idArray objectAtIndex:indexPath.row];
  
          NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
          [formatter setDateFormat:@"dd MMM,yyyy"];
          NSString *dateStr = [formatter stringFromDate:idItems.Date];
          UIImageView *accDis = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Arrow.png"]];    
          cell.accessoryView = accDis;
          self.idTableView.separatorColor = [UIColor colorWithRed:150.0/255.0 green:150.0/255.0 blue:150.0/255.0 alpha:1];
          cell.textLabel.textColor = [UIColor blackColor];
          cell.textLabel.font = [UIFont boldSystemFontOfSize:18];
          cell.textLabel.adjustsFontSizeToFitWidth = YES;
          cell.detailTextLabel.textColor = [UIColor colorWithRed:100.0/255.0 green:100.0/255.0 blue:100.0/255.0 alpha:1];
          cell.detailTextLabel.font = [UIFont italicSystemFontOfSize:16];
          cell.detailTextLabel.adjustsFontSizeToFitWidth = YES;
  
          NSString *detailText = [NSString stringWithFormat:@"%@ - %@",dateStr,idItems.GeoCode];
  
          if (idItems.Image == NULL) {
              cell.imageView.image = [UIImage imageNamed:@"icon58x58.png"];
          }
          else
          {
          //pass image to fix size 50 X 50
          //UIImage *newImage = [self postProcessImage:idItems.Image];
              cell.imageView.image = idItems.thumb;//newImage; 
          cell.imageView.contentMode=UIViewContentModeScaleAspectFill;
          }
  
          cell.textLabel.text = idItems.TypeName; 
          cell.detailTextLabel.text = detailText;
  
          return cell;   
      }    
  }
  
  - (void)tableView:(UITableView *)tv commitEditingStyle:(UITableViewCellEditingStyle)editingStyle 
      forRowAtIndexPath:(NSIndexPath *)indexPath {
  
      if(editingStyle == UITableViewCellEditingStyleDelete) {
  
          if ([idArray count] &gt;=1) 
          {
              [idTableView beginUpdates];
  
              //Get the object to delete from the array.
              identifyObject = [appDelegate.idArray objectAtIndex:indexPath.row];
  
              //Delete the object from the table.
              [self.idTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
               [appDelegate removeID:identifyObject];
  
              if ([idArray count] == 0) {
                  [self.idTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
              }
              [idTableView endUpdates];
          }
      }
  }
  </code></pre>