2

配列とデータベースから行を削除する必要があるアプリケーションを開発しています..? cellForRowAtIndexPathでは、cell.textLabel.Text=[myarray.objectAtIndexPath.row]; その行をデータベースと配列からも削除したい.Editingメソッドでは、次のようなコードを記述します

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 = @"セル";

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 からレコードを削除するメソッドです。選択した行をデータベースから削除するにはどうすればよいですか。非常に単純なことはわかっていますが、事前に混乱しました..

4

2 に答える 2

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");
}

}
于 2012-04-24T05:42:06.593 に答える
0

この行を確認してください。

database *objdata=[[database alloc]init];
[app deleteCategory:objdata];  

database最初の行では、 " " as ""のオブジェクトを作成し、objdataそれを割り当てています。この場所では、" objdata"には何もありません。したがって、これをdeleteCategory:メソッドに渡すと、データベースから削除されるものはありません。だからここに問題があります。

これを試して:

 database *objdata=[[database alloc]init];
 objdata = [myarray.objectAtIndexPath.row];
[app deleteCategory:objdata];  
于 2012-04-24T07:24:47.090 に答える