在可编辑的uitable中移动某些行后出错

时间:2012-05-25 06:14:31

标签: iphone objective-c ios uitableview

我想在可编辑的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:

2 个答案:

答案 0 :(得分:1)

您在代码末尾发布了注释而没有在“items”数组

上执行此操作
    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]]; 

答案 1 :(得分:0)

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