2011-05-26 1 views
0

Lorsque je supprime la cellule de la vue de la table: Cette erreur est se produire:Recevoir inattendu « EXC_BAD_ACCESS »

Program received signal: “EXC_BAD_ACCESS”. 
warning: Unable to read symbols for /Xcode3.2.5/Platforms/iPhoneOS.platform/DeviceSupport/4.3.2 (8H7)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found). 

Ici je supprime l'objet de la cellule et son événement de calandres:

if (editingStyle == UITableViewCellEditingStyleDelete) 
    { 
     //Get the object to delete from the array. 
     lovkid *mykids = (lovkid *)[appDelegate.actionarray1 objectAtIndex:indexPath.row]; 
     appDelegate.actionId = mykids.Id; 

     //delete from calender 
     if([ mykids.Event isEqualToString:@"empty"]) 
     { 
     } 
     else 
     { 
      EKEvent* event2 = [appDelegate.eventStore eventWithIdentifier:mykids.Event]; 
      if (event2 != nil) 
      { 
       NSError* error = nil; 
       [appDelegate.eventStore removeEvent:event2 span:EKSpanThisEvent error:&error]; 
      } 
     } 

     //delete end 
     [mykids deleteAction]; 
     [appDelegate.actionarray1 removeObjectAtIndex:indexPath.row]; 

     //Delete the object from the table. 
     [localTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 
     [localTable reloadData]; 
     a = 0; 
    } 
    else 
    { 
     //NSLog(@"test"); 
    } 

Supprimer db :

deleteStmt1 = nil; 
    if(deleteStmt1 == nil) 
    { 
      const char *sql = "delete from actions where id = ?"; 
      if(sqlite3_prepare_v2(database1, sql, -1, &deleteStmt1, NULL) != SQLITE_OK) 
       NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database1)); 

    //When binding parameters, index starts from 1 and not zero. 
     sqlite3_bind_int(deleteStmt1, 1,(int)appDelegate.actionId); 

     if (SQLITE_DONE != sqlite3_step(deleteStmt1)) 
      NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database1)); 

     sqlite3_reset(deleteStmt1); 
     sqlite3_finalize(deleteStmt1); 
    } 

Quelle est la raison de cette erreur?

+0

Que dit le journal? Sur quelle ligne s'écrase-t-il? – Rayfleck

+0

La première étape est [activation de NSZombie] (http://stackoverflow.com/questions/5841014/zombie-logging-enable/5841041#5841041). Après cela, créez et exécutez l'application, puis dites-nous le message d'erreur plus détaillé. –

Répondre

1

Je suggère de retirer la ligne:

[localTable deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; 

Si vous rechargez la table par reloadData, il est nécessaire de ne pas supprimer la ligne de cette façon. La table sera rechargée reflétant le nouvel état de la source de données. D'autre part, vous pouvez rechercher beginUpdates et endUpdates si vous actualisez votre table plus facilement. Dans ce cas, il est logique d'utiliser deleteRowsAtIndexPaths.

Je ne sais pas si cela va résoudre votre problème. Dans le cas contraire, je suggère que vous exécutiez sous le débogueur afin que vous puissiez savoir exactement quelle est la déclaration fautive à l'origine du plantage.

+0

J'ai aussi dû supprimer l'animation. Frustrant. –