我开发了一个应用程序,我需要从数组和数据库中删除行。?在 cellForRowAtIndexPath 中我写的像 cell.textLabel.Text = [myarray.objectAtIndexPath。我希望从数据库和数组中删除该行。在编辑方法中我编写代码如
MoneyAppDelegate *mydelegate=(MoneyAppDelegate *)[[UIApplication sharedApplication]delegate];
if (editingStyle == UITableViewCellEditingStyleDelete)
{
database *objdata=[[database alloc]init];
[app deleteCategory:objdata];
[self.mytableview deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
但它不起作用。在deletecategory方法中,我有像
这样的代码-(void)deleteCategory:(database *)databaseObj
{
[databaseObj deleteCategory];
[myarray removeObject:databaseObj];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
MoneyAppDelegate * app =(MoneyAppDelegate *)[[UIApplication sharedApplication] delegate];
static NSString * CellIdentifier = @“Cell”;
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator;
}
cell.textLabel.text = [app.myarray4 objectAtIndex:indexPath.row];
return cell;}
deletecategory是从Database.nothing中删除记录的方法。 如何从数据库中删除所选择的行我知道它非常简单,但我提前混淆了..thnanx:)
答案 0 :(得分:2)
试试这个 -
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
{
return UITableViewCellEditingStyleDelete;
}
-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath
{
[self delBtnPressed:indexPath.row];
}
//在这里放置代码 -
-(void)delBtnPressed:(int)sender
{
NSString *titleStr=@"";
NSString *table=@"";
NSString *attribute=@"";
sqlite3 *database;
if(![titleStr isEqualToString:@""])
{
//-------------------------------deletion-------------------------
if(sqlite3_open([databasePath UTF8String], &database) == SQLITE_OK)
{
NSString * sqlStatement = [NSString stringWithFormat:@"delete from %@ where %@='%@' ",table,attribute,titleStr];
if (sqlite3_exec(database, [sqlStatement cStringUsingEncoding:NSUTF8StringEncoding], NULL, NULL, NULL) == SQLITE_OK)
{
[yourArr removeAllObjects];
[self fetchAgain]; //here you need to fetch all records from DB and fill the yourArr again.
[tblView reloadData];
}
sqlite3_close(database);
}
}
else
{
NSLog(@"Error while deleting please try again");
}
}
答案 1 :(得分:0)
检查此行..
database *objdata=[[database alloc]init];
[app deleteCategory:objdata];
在第一行中,您只是将“database
”的对象创建为“objdata
”并将其分配。在此处“objdata
”中没有任何内容。因此,当您将此传递给deleteCategory
:方法时,数据库中不会删除任何内容。所以这是一个问题。
试试这个:
database *objdata=[[database alloc]init];
objdata = [myarray.objectAtIndexPath.row];
[app deleteCategory:objdata];