У меня есть базовая модель данных с отдельными объектами. Затем я загружаю эти объекты в массив и отображаю их в таблице со стилями ячеек по умолчанию. На панели навигации есть кнопка удаления, которая при выборе строки (например, объекта) и нажатии этой кнопки должна удалить строку и соответствующий объект в базовой модели. Я видел примеры удаления строк, но с кнопкой удаления, отображаемой в каждой строке. Я хочу иметь только одну кнопку в навигационной панели и иметь возможность управлять удалением строк из нее. Я пробовал код ниже, но он не работает. Я не могу найти способ идентифицировать строку, выбранную в методе удаления. Любая помощь приветствуется.
В viewdidload класса tableviewcontroller:
UIBarButtonItem *delButton = [[UIBarButtonItem alloc]
initWithTitle:@"Del"
style: UIBarButtonItemStyleBordered
target: self
action:@selector(delItemToArray)];
self.managedObjectContext = ((ecoAppDelegate *) [UIApplication sharedApplication].delegate).managedObjectContext;
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription
entityForName:@"FavoritesInfo" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
fetchRequest.resultType = NSDictionaryResultType;
[fetchRequest setPropertiesToFetch:[NSArray arrayWithObjects:@"name", nil]];
NSError *error=nil;
self.favArr=[self.managedObjectContext executeFetchRequest:fetchRequest error:&error];
if (error!=nil) {
NSLog(@" fetchError=%@,details=%@",error,error.userInfo);
}
self.favName = [self.favArr valueForKey:@"name"];
//Delete Item To table array and delete object to data core model
- (void)delItemToArray {
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
NSManagedObjectContext *context = [appDelegate managedObjectContext];
[context deleteObject:appDelegatee.favoritesInfo]; // favoritesInfo is the NSManagedObject
NSIndexPath *indexPath;
[favName removeObjectAtIndex:indexPath.row];
[appDelegatee saveContext]; // to save changes in the core data model
[self.tableView reloadData];
}
Ошибка:
[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 0x8852b90
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance 0x8852b90'
favName
- person Dimitris Bouzikas   schedule 15.07.2014NSArray
declares селектора removeObjectatIndex. - person user3211165   schedule 15.07.2014NSArray
наNSMutableArray
. А также, когда вы инициализируете массив, вы должны использовать этотfavName = [NSMutableArray array];
- person Dimitris Bouzikas   schedule 15.07.2014