2012-10-31 7 views
11

Sonunda garip bir kaza geçirdim. Bu, nil indexPath ile çağrılan tableView:commitEditingStyle:forRowAtIndexPath: neden olur. Ama nasıl olabilir? ile dizine de verilerin varlığınaNasıl tabloView: commitEditingStyle: forRowAtIndexPath: bir nil indexPath ile çağrılabilir?

6 XXX  -[ListViewController tableView:commitEditingStyle:forRowAtIndexPath:] (ListViewController.m:427) 
7 UIKit -[UITableView(UITableViewInternal) animateDeletionOfRowWithCell:] + 85 
8 UIKit -[UIApplication sendAction:to:from:forEvent:] + 73 
9 UIKit -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31 
10 UIKit -[UIControl sendAction:to:forEvent:] + 45 
11 UIKit -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 
12 UIKit -[UIApplication sendAction:to:from:forEvent:] + 73 
13 UIKit -[UIApplication sendAction:toTarget:fromSender:forEvent:] + 31 
14 UIKit -[UIControl sendAction:to:forEvent:] + 45 
15 UIKit -[UIControl(Internal) _sendActionsForEvents:withEvent:] + 503 
16 UIKit -[UIControl touchesEnded:withEvent:] + 489 
17 UIKit -[UIWindow _sendTouchesForEvent:] + 525 
18 UIKit -[UIApplication sendEvent:] + 381 
19 UIKit _UIApplicationHandleEvent + 6155 
20 GraphicsServices _PurpleEventCallback + 591 
21 CoreFoundation __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 15 
22 CoreFoundation __CFRunLoopDoSources0 + 213 
23 CoreFoundation __CFRunLoopRun + 647 
24 CoreFoundation CFRunLoopRunSpecific + 357 
25 CoreFoundation CFRunLoopRunInMode + 105 
26 GraphicsServices GSEventRunModal + 75 
27 UIKit UIApplicationMain + 1121 
28 XXX  main (main.m:16) 
29 XXX  start + 40 
+0

Bir yığın izleme çağrısı nereden geldiğini gösteren var mı? – rmaddy

+0

Yığın izi ekledim. – an0

+0

Aynı IndexPath hatasına sahibim, ancak başka bir yığın izlemesi var. Sorunu düzeltmeyi başardınız mı? – sergtk

cevap

-1

istisna ama indexPath zaten silinir: Burada

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     // DEBUG 
     if (indexPath == nil) { 
      NSLog(@"Deleting row at nil indexPath in %@", self); 
     } 
     [self deleteItemAtIndexPath:indexPath fromTableView:tableView]; 
    } 
} 

yığın izidir. Dizindeki dizi nesnesini silmeniz gerekir.

aşağıdaki deneyin:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
     if (editingStyle == UITableViewCellEditingStyleDelete) 
     { 
     [self deleteItemAtIndexPath:indexPath fromTableView:tableView]; 
     NSMutableArray * tempArray = [yourDataArray mutableCopy]; 
     [tempArray removeObjectAtIndex: indexPath.row]; 
     yourDataArray = tempArray; 
     [tableView reloadData]; 
     } 
    } 
İlgili konular