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

「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]]; 
于 2012-05-25T06:20:26.433 に答える
0

そのAlloc initの問題だと思います...だから、あなたのuitableviewで使用する「rowContent」と他の文字列を割り当ててみてください

于 2012-05-25T06:22:41.833 に答える