J'ai toujours besoin de votre aide.
J'ai ce morceau de code qui ne veut pas fonctionner.Supprimer une ligne de la base de données table et sqlite
-(void)tableView:(UITableView *)_tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
NSDictionary *rowVals = (NSDictionary *) [shoppingListItems objectAtIndex:indexPath.row];
NSString *keyValue = (NSString *) [rowVals objectForKey:@"key"];
[tableView beginUpdates];
sqlite3 *db;
int dbrc; //Codice di ritorno del database (database return code)
DatabaseShoppingListAppDelegate *appDelegate = (DatabaseShoppingListAppDelegate*) [UIApplication sharedApplication].delegate;
const char *dbFilePathUTF8 = [appDelegate.dbFilePath UTF8String];
dbrc = sqlite3_open(dbFilePathUTF8, &db);
if (dbrc) {
NSLog(@"Impossibile aprire il Database!");
return;
}
sqlite3_stmt *dbps; //Istruzione di preparazione del database
NSString *deleteStatementsNS = [NSString stringWithFormat: @"DELETE FROM \"shoppinglist\" WHERE key='%@'", keyValue];
const char *deleteStatement = [deleteStatementsNS UTF8String];
dbrc = sqlite3_prepare_v2(db, deleteStatement, -1, &dbps, NULL);
dbrc = sqlite3_step(dbps);
//faccio pulizia rilasciando i database
sqlite3_finalize(dbps);
sqlite3_close(db);
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
[shoppingListItems removeObjectAtIndex:indexPath.row];
[tableView reloadData];
[tableView endUpdates];
}
}
En fait, cela fonctionne très bien. Je peux glisser vers une rangée dans la table, la supprimer, j'ai mon effet de fondu, le contenu est retiré de la base de données et de la table.
Mais si je tente d'enlever un autre élément juste après le premier que j'ai un SIGABRT sur
[shoppingListItems removeObjectAtIndex:indexPath.row];
Si je passe à un autre onglet, revenir en arrière et supprimer une ligne, tout fonctionne bien ...
Tout des idées?
Je ne sais pas ce qui ne va pas avec mon mac ... Parfois, ce code fonctionne, parfois non ... Et il y a un problème avec la dernière ligne trop ... – Oiproks