我正在构建一个浏览器,我有一个数据库,用于存储浏览器的书签。
在我的“书签”表中,我有一个“ID(AUTOINCREMENT)”和一个“URL”字段。 问题是,当我删除任意ID时,我的数据库中仍有一个漏洞。像“ID1,ID2,ID700”...... 当我在TableView中列出它时,会跳过这些。
因此,行号1不一定是ID号1。
如何设法删除TableView中的行,同时从我的数据库中删除相应的字段(ID和URL)?
这是我的一段代码:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
//CRIA A CELULA DESTA LINHA DA TABELA
static NSString * CellIdentifier = @"Cell";
UITableViewCell * cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
//FAZ CACHE DA CELULA PARA EVITAR CRIAR MUITOS OBJETOS DESNECESSARIOS DURANTE O SCROLL
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier];
}
//RECUPERA O NUMERO DA LINHA 0, 1, 2, 3...
NSInteger row = indexPath.row;
self.counter = 1;
NSString * bookmark = [[Dados sharedDB]getBookmark:row+1];
//TEXT
if ([bookmark isEqualToString:@"ERROR"]) {
do {
self.counter++;
bookmark = [[Dados sharedDB]getBookmark:row+self.counter];
} while ([bookmark isEqualToString:@"ERROR"]);
}
cell.textLabel.text = [NSString stringWithFormat:@"%@", bookmark];
return cell;
}
答案 0 :(得分:0)
您必须首先删除数据库中的数据,然后从数据库中获取修改后的(新)数据并重新加载tableview。
它是如何工作的,你必须使用didSelectRowAtIndexPath
方法来知道选择了哪一行。使用indexPath.row
属性,确定该条目的ID(我相信您必须在显示之前获取数组中的所有数据)。然后,在数据库中,删除该特定条目。假设您正在使用核心数据,则必须获取该条目,将其删除,然后将其保存在托管对象上下文中。完成此操作后,获取所有数据并将其存储在视图控制器的数组中。最后,调用[self.tableview reloadData]
。