gpt4 book ai didi

ios - 我试图从数据库中删除数据,但有时数据被删除,有时数据未被删除

转载 作者:行者123 更新时间:2023-11-29 05:31:19 24 4
gpt4 key购买 nike

我试图从数据库中删除 TableView 的 didSelectRowAtIndexPath 方法上的数据,但数据未删除。有时记录会被删除,但有时不会被删除。显示旧数据。

    const char *dbpath = [databasePath UTF8String];
if(sqlite3_open(dbpath, & contactDB) == SQLITE_OK)
{
NSString *deleteSQL = [NSString stringWithFormat:@"delete from userDetails where name = '%@'", _name.text];
NSLog(@"%@:", deleteSQL);
const char *delete_stmt = [deleteSQL UTF8String];
sqlite3_prepare_v2( contactDB, delete_stmt, -1, &statement, NULL);
if (sqlite3_step(statement) == SQLITE_DONE)
{
_dbStatus.text = @"record is deleted";
} else {
_dbStatus.text = @"record not deleted";
NSLog(@"Error: %s", sqlite3_errmsg(contactDB));
}
sqlite3_close(contactDB);
}
[tableview reloadData];
}


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
[resultentArray removeObjectAtIndex:indexPath.row];
NSString *selectedRow1 = [[resultentArray objectAtIndex:indexPath.row]valueForKey:@"name"];
}

最佳答案

您没有显示如何调用从数据库中删除的方法,或者 _name.text 来自何处,但我最初的倾向是您从数据库中删除目标行使用数据模型数组之前:

[resultentArray removeObjectAtIndex:indexPath.row];
NSString *selectedRow1 = [[resultentArray objectAtIndex:indexPath.row]valueForKey:@"name"];

这将导致 selectedRow1 成为目标行之后下一个索引处的对象。如果您尝试删除最后一行,我认为这会导致索引越界错误。

尝试颠倒这两者的顺序(获取目标行然后将其删除),看看是否有任何区别。如果它不能编辑您的问题,请发布一些额外的代码,了解如何调用从数据库中删除的方法,以及如何设置 _name.text

NSString *selectedRow1 = [[resultentArray objectAtIndex:indexPath.row]valueForKey:@"name"];
[resultentArray removeObjectAtIndex:indexPath.row];

关于ios - 我试图从数据库中删除数据,但有时数据被删除,有时数据未被删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57525594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com