0

我想在可编辑的 UITableView 中移动一些行后保存到数据库,但是发生错误我找不到错误原因。请就我的代码给我建议。谢谢!!

我的代码:

- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
           return indexPath.section == 0 && indexPath.row < items.count;        
} 

- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath 
  toIndexPath:(NSIndexPath *)toIndexPath {

        isReOrderNoteList= YES;

        NSString *rowContent = [items objectAtIndex:fromIndexPath.row];
        [items removeObjectAtIndex:fromIndexPath.row];
        [items insertObject:rowContent atIndex:toIndexPath.row];
 }

//I'm using UIButton instead of Navigation barbutton.
- (IBAction)EditTable:(id)sender{

       f(TableView.editing)
        {
            if(isReOrderNoteList)
            {    
                [super setEditing:NO animated:NO]; 
                [TableView setEditing:NO animated:NO];
                [btn_Edit setTitle:@"Edit" forState:UIControlStateNormal];

                FMDatabase *dbS = [FMDatabase databaseWithPath:dbPath];     
                [dbS open]; 

                NSInteger tmp = 1; 
                NSLog(@" [self.items count] : %d", [ items count]);  **// Print 6 !!.** 

                for (NSInteger i = 0; i< [items count]; i++) {

                    Note *list = [[Note alloc] init];
                    list = [items objectAtIndex:i]; 
                    NSLog(@" list.itle : %@", list.title);  **//Error occurred at this line.**
                    NSLog(@" list.IDX : %d", list.IDX);
                    [dbS executeUpdate:@"Update test set sort_seq = ? where  idx = ? ", [NSNumber numberWithInt:tmp], [NSNumber numberWithInt:list.IDX]]; 
                    [list release];
                    tmp++; 
                }
                [dbS close];      
            }

            //Re-init 
            isReOrderNoteList = NO; 
        }
        else
        {
            [super setEditing:YES animated:YES]; 
            [TableView setEditing:YES animated:YES];      
            [btn_Edit2 setTitle:@"Done" forState:UIControlStateNormal]; 
        }

}

错误 :

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[NSConcreteNotification title]: unrecognized selector sent to instance 0x892b550'
*** First throw call stack:
4

2 回答 2

1

您在代码末尾释放注释而不在“项目”数组上执行

    Note *list = [[Note alloc] init];
    list = [items objectAtIndex:i]; 
    NSLog(@" list.itle : %@", list.title);  **//Error occurred at this line.**
    NSLog(@" list.IDX : %d", list.IDX);
    [dbS executeUpdate:@"Update test set sort_seq = ? where  idx = ? ", [NSNumber numberWithInt:tmp], [NSNumber numberWithInt:list.IDX]]; 
    [list release];

它应该是

    Note *list = [items objectAtIndex:i]; 
    NSLog(@" list.itle : %@", list.title);  **//Error occurred at this line.**
    NSLog(@" list.IDX : %d", list.IDX);
    [dbS executeUpdate:@"Update test set sort_seq = ? where  idx = ? ", [NSNumber numberWithInt:tmp], [NSNumber numberWithInt:list.IDX]]; 
于 2012-05-25T06:20:26.433 回答
0

我认为它的 Alloc init 问题......所以尝试分配你在 uitableview 中使用的“rowContent”和其他字符串

于 2012-05-25T06:22:41.833 回答