2013-09-25 3 views
0

Я хочу удалить запись из ячейки tableviewcontroller.Ошибка при удалении записей в UITABLEVIEWCONTROLLER?

это мой код ViewController.h файл

#import <UIKit/UIKit.h> 

@interface IMSCategoryViewController : UITableViewController 
@property (readonly, strong, nonatomic) NSManagedObjectContext *managedObjectContext; 
@property (readonly, strong, nonatomic) NSManagedObjectModel *managedObjectModel; 
@property (readonly, strong, nonatomic) NSPersistentStoreCoordinator *persistentStoreCoordinator; 
@property(nonatomic,retain)NSArray *arr; 
@property (readonly, strong, nonatomic) NSMutableArray *categoryArray; 
@end 

и этот в файле реализации.

#import "IMSCategoryViewController.h" 
#import "IMSAppDelegate.h" 
#import "Category.h" 

@interface IMSCategoryViewController() 
{ 
    NSManagedObjectContext *context; 
} 
@end 

@implementation IMSCategoryViewController 
@synthesize managedObjectContext = _managedObjectContext; 
@synthesize managedObjectModel = _managedObjectModel; 
@synthesize persistentStoreCoordinator = _persistentStoreCoordinator; 
@synthesize categoryArray; 
@synthesize arr; 

и где я выполняю действие удаления.

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     NSManagedObject *recordtoDelete = [arr objectAtIndex:indexPath.row]; 

     [_managedObjectContext deletedObject:recordtoDelete]; 



     [arr objectAtIndex:indexPath.row]; 

     [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES]; 

     NSError *error = nil; 
     if (![_managedObjectContext save:&error]) { 
      //handle error here 
     } 

    } 
    else if (editingStyle == UITableViewCellEditingStyleInsert) { 
     // Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view 
    } 
} 

ХОРОШО Поэтому, когда я запускаю этот код ...

дает этот тип ошибки ...

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason:' 

Invalid update: invalid number of rows in section 0. 
The number of rows contained in an existing section after the update (15) must be equal 
to the number of rows contained in that section before the update (15), plus or minus 
the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus 
or minus the number of rows moved into or out of that section (0 moved in, 0 moved out).' 

ответ

0

Вы хотите DeleteObject: метод, а не свойство deletedObjects, которая возвращает NSSet.

+0

это дает это, когда я использую этот метод , истекающее приложение из-за неперехваченное исключение «NSInternalInconsistencyException», причина: «Invalid обновления: недопустимое количество строк в разделе 0. Число строк, содержащихся в существующем разделе после обновления (15) должно быть равно количеству строк, содержащихся в этом разделе, перед обновлением (15) плюс или минус количество строк, вставленных или удаленных из этого раздела (вставлено 0, 1 удалено) и плюс или минус количество строк перемещен в или из этой секции (0 перемещен, 0 перемещен). ' –

+0

Вы можете удалить [arr objectAtIndex: indexPath.row], поскольку объект, который возвращает метод, ничем не назначен. Чтобы устранить эту ошибку, поместите вызов deleteRowsAtIndexPaths между блоком обновления, например: '[tableView beginUpdates]; [tableView deleteRowsAtIndexPaths: [NSArray arrayWithObject: indexPath] withRowAnimation: YES]; [tableView endUpdates]; ' –

+0

та же ошибка, я удалил строку thet и обновил свой код с помощью этого –

Смежные вопросы