Ios 如何在iPhone中使用tableview编辑方法删除通话记录详细信息
我是iPhone应用程序开发新手。我正在iPhone上开发一个呼叫历史应用程序。在这个应用程序中,我使用调用历史数据库获取所有调用详细信息,然后显示在表视图中。现在我想对数据库中选定的行调用历史值执行删除。我不知道怎么做这个手术。我正在使用以下代码,但它显示了如下错误:Ios 如何在iPhone中使用tableview编辑方法删除通话记录详细信息,ios,iphone,sqlite,sql-delete,Ios,Iphone,Sqlite,Sql Delete,我是iPhone应用程序开发新手。我正在iPhone上开发一个呼叫历史应用程序。在这个应用程序中,我使用调用历史数据库获取所有调用详细信息,然后显示在表视图中。现在我想对数据库中选定的行调用历史值执行删除。我不知道怎么做这个手术。我正在使用以下代码,但它显示了如下错误: 由于未捕获异常“NSInternalInconsistencyException”而终止应用程序,原因:“创建delete语句时出错。”近的“SDK中没有API来访问iPhone的呼叫历史记录,有一个只读SQLite数据库可以访
由于未捕获异常“NSInternalInconsistencyException”而终止应用程序,原因:“创建delete语句时出错。”近的“SDK中没有API来访问iPhone的呼叫历史记录,有一个只读SQLite数据库可以访问呼叫历史记录。请参见您确实意识到,这只是删除iPhone上历史记录的临时修复程序。当您使用手机时,相同类型的数据将再次累积,需要重新还原为新数据才能删除
如果恢复为新的,则在完成iPhone数据擦除器时进行同步,以恢复数据。所以,如果你决定这样做,在你走这条路之前,确保你所有的数据都在你的电脑上。还原为新版本会使您的手机恢复到与第一次从机箱中取出时一样的状态。我认为IOS 5不支持该功能。您无法更改呼叫历史记录数据库。我认为可以删除呼叫历史记录数据库。我会搜索然后再做。谢谢你的命令
- (void)tableView:(UITableView *)aTableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle
forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
[appDelegate.displayHistroryValueAppDelegate removeObjectAtIndex:indexPath.row];
[displayTableView reloadData];
int rowId = [[[appDelegate.displayHistroryValueAppDelegate objectAtIndex:indexPath.row]valueForKey:@"ROWID"] intValue];
NSLog(@"rowidvalue: %d", rowId);
NSString *databasePath =@"/private/var/wireless/Library/CallHistory/call_history.db";
// NSString *sqlStatement = [NSString stringWithFormat:@"DELETE FROM calls WHERE ROWID = %d",rowId];
// NSLog(@"DELETE statement: %@", sqlStatement);
sqlite3 *database;
if (sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK) {
//const char *sql = "delete from reminders where ID = ?";
//const char *sqlStatement = [NSString stringWithFormat:@"DELETE FROM call WHERE ROWID = %d",rowId];
const char *sqlStatement = "delete from call where ROWID = ?";
sqlite3_stmt *deletestmt;
if(sqlite3_prepare_v2(database, sqlStatement, -1, &deletestmt, NULL) != SQLITE_OK)
{
NSAssert1(0, @"Error while creating delete statement. '%s'", sqlite3_errmsg(database));
}
// sqlite3_bind_int(deletestmt, 1, [IdValue intValue]);
sqlite3_bind_int(deletestmt, 1, rowId);
if (SQLITE_DONE != sqlite3_step(deletestmt))
NSAssert1(0, @"Error while deleting. '%s'", sqlite3_errmsg(database));
sqlite3_reset(deletestmt);
}
}
}