如何从ios sdk中的sqlite中删除特定的单元格和行

时间:2013-10-03 06:13:20

标签: ios objective-c xcode sqlite custom-cell

这是我实现了cellforRowAtIndexPath方法

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath;
{
    static NSString *cellIdentifier=@"myCell";
    CustomTableCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
    if (cell==nil)
    {
        cell=[[CustomTableCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
    }
        DBObjectClass * info=[StudentInformationArr objectAtIndex:indexPath.row];
    cell.studIdLbl.text=[NSString stringWithFormat:@"%d",info.StudIDs];
    cell.studNameLbl.text=info.StudentName;
    cell.studEmailLbl.text=info.StudentEmail;
    cell.StudcontactLbl.text=[NSString stringWithFormat:@"%d",info.StudentContact];


    return cell;

}
  

其中DBObjectClass是NSOBject类模型类

以下是我在TableView中显示数据的方法

-(NSMutableArray*)StudentInformation;
{
    NSMutableArray *DBArray=[[NSMutableArray alloc]init];
    NSString *query=@"SELECT * FROM StudInfo ORDER BY studid";
    NSLog(@"Query is:%s",[query UTF8String]);
    sqlite3_stmt *statement;
    if (sqlite3_prepare_v2(_database, [query UTF8String], -1, &statement, nil)==SQLITE_OK)
    {
        while (sqlite3_step(statement)==SQLITE_ROW)
        {
            int  studID=sqlite3_column_int(statement, 0);
            char *studName=(char*)sqlite3_column_text(statement, 1);
            char *studEmail=(char*)sqlite3_column_text(statement, 2);
            int studContact= sqlite3_column_int(statement, 3);

            NSString *name=[[NSString alloc]initWithUTF8String:studName];
            NSString *email=[[NSString alloc]initWithUTF8String:studEmail];
            DBObjectClass *DbObj=[[DBObjectClass alloc]initWithSID:studID SName:name SEmail:email SContact:studContact];
            [DBArray addObject:DbObj];

        }
        sqlite3_finalize(statement);
    }
    sqlite3_close(_database);
    return DBArray;
}

我试图在这里实现删除查询

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 

如何使这项工作?任何帮助都将受到重视

1 个答案:

答案 0 :(得分:0)

试试这样。

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
 {
    if (editingStyle == UITableViewCellEditingStyleDelete)
         {
         NSManagedObject * managedObject = [StudentInformationArr objectAtIndex:indexPath.row];

         NSError *error;   
            [[self getManagedObjectContext] deleteObject: managedObject];
            [[self getManagedObjectContext] save:&error];
        }
//before reload your tableView you have to fetch the data from your core data again. So that StudentInformationArr will get updated. Use something like 

    StudentInformationArr =[self fetchStudentInformationArray];

        [self.myTableView reloadData];
}