2014-01-24 42 views
0

我正在構建一個瀏覽器,並且我有一個數據庫,其中存儲了我的瀏覽器的書籤。從TableView和數據庫中刪除單元格

在我的表「書籤」中,我有一個「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

你必須先刪除數據庫中的數據,然後取出從數據庫中修改(新)的數據,並重新加載的tableview。

所以它是如何工作的,你必須使用didSelectRowAtIndexPath方法來知道哪一行已被選中。使用indexPath.row屬性,確定該條目的ID(我相信你必須在顯示之前獲取數組中的所有數據)。然後,在數據庫中刪除該特定條目。假設您正在使用核心數據,則必須獲取該條目,將其刪除,然後將其保存在託管對象上下文中。完成此操作後,獲取所有數據並將其存儲在視圖控制器的數組中。最後,請撥打[self.tableview reloadData]的方法。

相關問題